无法更新MySql Database中的DATE字段。这是我使用的代码:
def update_date(self):
self.cursor.execute("""SELECT min(date),rec_id FROM mytable1 GROUP BY rec_id;""")
data=self.cursor.fetchall()
for row in data:
open_dt=row[0]
pr_id=row[1]
if open_dt:
open_dt= open_dt.date()
print open_dt,pr_id
self.cursor.execute("""UPDATE mytable2 rec_open_date=%s WHERE rec_id=%d;"""%(open_dt,rec_id))
else:
pass
我已经完成了所有必要的导入和DB连接。当我运行代码时,它会运行警告:
Warning: Out of range value for column 'rec_open_date' at row 1
self.cursor.execute("""UPDATE mytable2 SET rec_open_date=%s WHERE rec_id=%d;""" %(open_dt,rec_id))
答案 0 :(得分:1)
如果您引用documentation,您会看到execute
方法要求使用单独的数据参数,而不是使用%
格式化字符串。
尝试:
self.cursor.execute("""UPDATE mytable2 rec_open_date=%s WHERE rec_id=%s""",
(open_dt, rec_id))
你所做的是执行这个
UPDATE mytable2 rec_open_date=2011-02-03 12:34:56 WHERE rec_id=1;
这不是有效的陈述,但无论出于何种原因执行了某些事情。此外,使用%
是一个允许SQL注入攻击的安全漏洞。