MSSQL 2005 Server(IIRC)和Python模块_mssql ..我有多个插入到一个单行的表,这是主键..现在我可能多次插入相同的值,但我想简单地忽略"违反PRIMARY KEY约束" 。应该提出其他错误。
我知道我可以try: [...]INSERT[...] except: *magic*: pass
但我无法找到发生的例外名称。
编辑:
我不知道这个解决方案是否可以接受,但它是我迄今为止所得到的。
try:
con.execute_query('INSERT [...]')
except _mssql.MssqlDatabaseException,e:
if e.number == 2627:
#primary key constraint
pass
else:
raise
答案 0 :(得分:0)
您需要执行UPSERT - 这意味着更新(如果存在)或插入。在使用非常旧版本的SQL Server时,请尝试以下方法:
q = """IF EXISTS (SELECT PrimaryKeyField FROM SomeTable WHERE PrimaryKeyField = %s)
UPDATE SomeTable
SET
SomeFieldA = %s,
SomeFieldB = %s,
SomeNumberA = %d
WHERE
PrimaryKeyField = %s
ELSE
INSERT INTO SomeTable (
PrimaryKeyField,
SomeFieldA,
SomeFieldB,
SomeNumberA
) VALUES (%s,%s,%s,%d)"""
cur.execute(q, ('a','b','c',1,'a','b','c',1))
con.commit()