2017-10-06 16 views
0

私はCSVファイルからMySQLにINSERTしようとしています。このフォーマット:表中の私の列がValueError:時刻データ '{0}'がフォーマット '%d /%m /%Y'と一致しません。

YYYY-MM-DDとして設定されている

31/08/2017; 

が、これは私のコードです:

import datetime 
    import csv 
    import MySQLdb 
    ... 
    insertionSQL="INSERT INTO transactions (trans_date, trans_desc, trans_amnt) VALUES(" + datetime.datetime.strptime('{0}', '%d/%m/%Y').strftime('%Y-%m-%d') + ",{2},{3}), row)" 
    cur.execute(insertionSQL) 

私はPythonスクリプトから次のエラーを取得します:

(data_string, format)) 
    ValueError: time data '{0}' does not match format '%d/%m/%Y' 
+0

Ok。まず第一に、これは 'datetime.datetime.strptime( '{0}'、 '%d /%m /%Y')'が警告を出すため、MySQLとは無関係のようです。 – sam

+0

文字列の書式は '{0}'です。書式(your_date_string)。 – temasso

答えて

0

クエリ実行中に日付書式設定ロジックを実行する必要があります。文字列が日付書式文字列に従って日付オブジェクトに変換しようとしていますが、これは明らかに動作しません)

insertionSQL = "INSERT INTO transactions (trans_date, trans_desc, trans_amnt) VALUES(%s, %s, %s)" 
    ... # read csv 
    # Reformat the date on the actual data from the CSV! 
    csv_date = datetime.datetime.strptime(csv_date, '%d/%m/%Y').strftime('%Y-%m-%d') 
    # Now all of your input data is formatted correctly, execute the prepared statement. 
    cursor.execute(insertionSQL, (csv_date, csv_desc, csv_amnt)) 
0

問題が見つかりました。私はデリミタ= ";"が見つかりませんでしたcsvリーダーは1つの値として行全体を取った

関連する問題