如何在Python中的MySQL语句中使用DATE_FORMAT?

时间:2013-11-11 02:37:56

标签: python mysql

我正在尝试将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()

1 个答案:

答案 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)"""