Python 更新MySQL数据库表中的日期字段

Python 更新MySQL数据库表中的日期字段,python,mysql,date,Python,Mysql,Date,无法更新MySql数据库中的日期字段。以下是我使用的代码: 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 op

无法更新MySql数据库中的日期字段。以下是我使用的代码:

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))
如果参考,您将看到
execute
方法调用一个单独的数据参数,而不是使用
%
格式化字符串

尝试:

你所做的是执行这个

UPDATE mytable2 rec_open_date=2011-02-03 12:34:56 WHERE rec_id=1;

这不是一个有效的语句,但不管出于什么原因,执行了某些东西。另外,使用
%
是一种允许SQL注入攻击的安全缺陷。

您会收到什么错误?请参阅上述详细信息。运行时,它只会提示一个警告,当我检查数据库时,它会将所有记录的rec_open_date更新为0000-00-00。您的错误是指
calc_study_open_dt
,但您指的是
rec_open_date
?我的错。。。。!!!我做了编辑…你可以检查now@user3747506它不起作用了,什么都没告诉我。你能试着打印出open_dt和rec_id的值并将其包含在你的问题中吗?还考虑删除最后的<代码>;<代码>。我更新了我的答案。query=query%tuple([db.literal(item)用于args中的item])类型错误:%d格式:需要一个数字,而不是strOh,哎呀,最后一个
%d
应该是
%s
。我的答案现在已修复。@user3747506是否还有任何其他原因使其无法工作?如果有效,你应该接受答案。
UPDATE mytable2 rec_open_date=2011-02-03 12:34:56 WHERE rec_id=1;