5

我正在尝试将 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: unsupported format character 'm' (0x6d) at index 60

我的 csv 文件中的日期格式是 mm/dd/yyyy。我已经尝试在我的 python 脚本中的DATE_FORMAT('%%m/%%d/%%Y')中使用 %% ,正如我在本网站某处所读到的那样,但它对我不起作用。感谢您的帮助,并在此先感谢您。

PS这是我执行语句的方式

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()
4

1 回答 1

6

没错,你应该把%里面的所有字符加倍DATE_FORMAT(),以免它们被解释为准备好的语句占位符。但是您DATE_FORMAT()在错误的地方使用了该函数,您应该在VALUES(...)声明中使用它,因此要解决所有问题,请尝试:

sql = """INSERT INTO tbl_celebrants(id, name, birthday, address)
VALUES(%s , %s, DATE_FORMAT(%s,'%%m/%%d/%%Y'), %s)"""
于 2013-11-11T02:39:50.397 回答