我正在尝试将csv文件的行导入到mysql表中,我使用Python来执行此操作。 这是我的python脚本中的mysql语句的片段:
sql = """INSERT INTO tbl_celebrants(id, name, DATE_FORMAT(birthday,'%m/%d/%Y'), address) \
VALUES(%s , %s, %s, %s)"""
我说错了 ValueError:索引60处不支持的格式字符'm'(0x6d)
我的csv文件中的日期格式是mm / dd / yyyy。我已经尝试在我的python脚本中的 DATE_FORMAT('%% m / %% d / %% Y')中使用%%,正如我在本网站某处所读到的那样,但它没有为我工作。我感谢任何帮助,并提前多多感谢。
P.S 这是我执行语句的方式
for row in reader:
cursor = conn.cursor()
sql = """INSERT INTO tbl_celebrants(id, name, DATE_FORMAT(birthday,'%%m/%%d /%%Y'),address) VALUES(%s,%s,%s,%s)"""
cursor.execute(sql, row)
cursor.execute("commit")
cursor.close()
答案 0 :(得分:5)
是的,您应该将%
内的所有DATE_FORMAT()
字符加倍,以免将它们解释为预处理语句占位符。但是你在错误的地方使用DATE_FORMAT()
函数,你应该在VALUES(...)
声明中使用它,所以要解决所有问题,请尝试:
sql = """INSERT INTO tbl_celebrants(id, name, birthday, address)
VALUES(%s , %s, DATE_FORMAT(%s,'%%m/%%d/%%Y'), %s)"""