我在MySQL中创建了下面的表
create table DT (Date varchar(20), Time varchar(20))我使用下面的python代码来插入到mysql中。我没有收到任何错误,日期和时间也没有写入mysql。
import mysql.connector
from datetime import datetime
conn = mysql.connector.connect(host = 'localhost', database = 'mydatabase', user = 'root', password = '')
cursor = conn.cursor()
i = datetime.now()
xdate = i.strftime('%Y-%m-%d')
xtime = i.strftime('%H-%M-%S')
sqql = 'insert into DT (Date, Time) values (%s,%s);'
cursor.execute(sqql, xdate, xtime)
conn.commit()
conn.close()我没有得到任何错误,也没有得到插入到mysql的日期和时间。但是,当我直接在mysql中执行插入操作时,它可以正常工作。
insert into DT (Date, Time) values ('2017-02-06', '19-54-36');不确定如何解决?有人能帮帮忙吗?
发布于 2017-02-06 22:27:54
您没有正确传递查询参数,请将它们放入元组中,替换:
cursor.execute(sqql, xdate, xtime)通过以下方式:
cursor.execute(sqql, (xdate, xtime))发布于 2017-02-06 22:32:11
根据this example和the documentation的说法,cursor.execute()方法将字符串查询作为第一个参数,第二个参数是包含该查询的值的元组或字典。所以你应该这样调用这个方法:
cursor.execute(sqql, (xdate, xtime))如果您仅在此调用中使用xdate和xtime,您甚至可以通过以下方式简化此调用:
cursor.execute(sqql, (i.strftime('%Y-%m-%d'), i.strftime('%H-%M-%S')))此外,您还可以使用字典来提高代码的可读性:
sqql = 'insert into DT (Date, Time) values (%(xdate)s, %(xtime)s);'
cursor.execute(sqql, {'xdate': `xdate`, 'xtime`: xtime})https://stackoverflow.com/questions/42070117
复制相似问题