我有两个sqlite查询,它们使用executemany从python字典插入和更新数据集。使用insert
查询dictionary.values()
作为executemany第二个参数可以很好地工作,但是使用update我没有得到任何更新。有人能解释一下为什么会有不同吗?
插入代码示例:
query = "INSERT OR REPLACE INTO farm_tb(farm_id, farm)\
VALUES(:frmid, :frm)"
cur.executemany(query, arr.values())
conn.commit()
更新示例:
query = ("UPDATE emp_log_tb SET syncstatus=syncstatus WHERE log_id=log_id", (':syncstatus', ':logid'))
cur.executemany(query, arr.values())
conn.commit()
两个数据集看起来相似:
插入数据:
{'0': {'farmid': '4', 'farm': 'farm1'}, '1': {'farmid': '3', 'farm': 'farm6'}}
更新数据:
{'0': {'logid': '1', 'syncstatus': 1}, '1': {'logid': '2', 'syncstatus': 1}, '2': {'logid': '3', 'syncstatus': 1}, '3': {'logid': '4', 'syncstatus': 1}, '4': {'logid': '5', 'syncstatus': 1}}
"UPDATE emp_log_tb SET syncstatus=syncstatus WHERE log_id=log_id", (':syncstatus', ':logid')
应该是UPDATE emp_log_tb SET syncstatus=:syncstatus WHERE log_id=:log_id
update语句只是将每一行的
syncstatus
设置为其当前值,因为log_id = log_id
总是true(当然,除非它是NULL
)。另外,您将元组分配给query
,而不是字符串。不知道executemany()
用它做什么你想要这样的东西吗
注意
UPDATE
中的命名参数,就像INSERT
中的参数一样相关问题 更多 >
编程相关推荐