我正在使用带有Python的sqlite3模块,到目前为止还有这个代码。在数据库中我存储了每日天气状况,现在我需要我的代码用更新的数据替换一些行。代码应该是datetime
值等于new_data[0]
的行。
我参数化查询的方式是错误的,但无法找出正确和最优雅的方式来实现它!
new_data = ['12 Mar 2014', 'sunny', 20, 12]
conn = sqlite3.connect(database_file)
c = conn.cursor()
c.execute("UPDATE weather SET datetime = ?, condition = ?, high = ?, low = ? WHERE datetime = %s" new_data, %new_data[0])
答案 0 :(得分:2)
您正在使用字符串操作混合参数化查询。首先,这是非常不安全的,其次,您已经创建了语法问题(您在查询字符串后错过了逗号)。试试这个:
new_data = ('12 Mar 2014', 'sunny', 20, 12, '12 Mar 2014',)
conn = sqlite3.connect(database_file)
c = conn.cursor()
c.execute("UPDATE weather SET datetime = ?, condition = ?, high = ?, low = ? WHERE datetime = ?", new_data)
更多细节可以在这里找到: https://docs.python.org/2/library/sqlite3.html