【发布时间】:2016-04-09 16:20:09
【问题描述】:
我正在使用 SQL Server、Python、pypyodbc。 我的表是:
tbl_User: id, owner
tbl_UserPhone: id, number, user_id
user_id 是 User 的主键和 UserPhone 的外键。 我正在尝试使用 pypyodbc 将 2 部不同的手机插入同一个 user_id。 这是我尝试过但不起作用的事情之一:
cursor = connection.cursor()
SQLCommand = ("INSERT INTO tbl_UserPhones"
"(id,number,user_id)"
" VALUES (?,?,?)")
values = [userphone_index, user_phone,"((SELECT id from tbl_User where id = %d))" % user_id_index]
cursor.execute(SQLCommand, values)
cursor.commit()
【问题讨论】:
-
你能解释一下
did not work吗?你收到错误了吗?需要更多信息 -
不,它只是跳过了 cursor.commit() 行。它应该工作吗?
-
如果我是你,我会使用 Python 打印出 SQLCommand,然后尝试将该命令粘贴到 SQL Server 的控制台(如 Management Studio)中以查看错误是什么。我猜这就是您的 tbl_UserPhones 表的定义方式,但如果没有更多信息就不可能知道。
-
这是我得到的:当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'tbl_UserPhones' 中插入标识列的显式值。
-
请edit 澄清您的问题:(1)
[tbl_UserPhone].[id]是该表的 IDENTITY 列,如果是,它也是主键吗? (2) 您是否已经知道要插入到[tbl_UserPhone].[user_id]列中的[tbl_User].[id]值?
标签: python sql sql-server pyodbc pypyodbc