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

そうです、準備されたステートメントのプレースホルダーとして解釈されないようにするには、%内部のすべての char を 2 倍にする必要があります。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 に答える