簡體   English   中英

當我使用python從csv文件將datetime插入mysql時出現錯誤

[英]when I am inserting datetime into mysql from csv file using python I am getting error

我從csv將datetime插入到mysql中,出現以下錯誤。

_mysql_exceptions.OperationalError: (1292, "Incorrect datetime value: '8/13/2017 19:10' for column 'js_signup' at row 1").

我的約會時間是這樣的“ 8/10/2017 12:59”

我的代碼如下

import csv
import MySQLdb
mydb = MySQLdb.connect(host='localhost',user='root',passwd='Yogi123$',db='wisdom_india')
 cursor = mydb.cursor()
csv_data = csv.reader(file('test_csv.csv'))
for row in csv_data:
    cursor.execute("""INSERT INTO testcsv(js_id,
    js_name,js_email,js_signup)
    VALUES(%s,%s,%s,STR_TO_DATE(%s,'%%%m/%%%d/%%%Y %%%h:%%%i'))""", row)
mydb.commit()
cursor.close()
print "Done"

除了使用SQL,您還可以在本機python代碼中重新格式化日期嗎? 請參見下面的示例(請注意,這僅是指示性的)。

import csv
import MySQLdb
mydb = MySQLdb.connect(host='localhost',user='root',passwd='Yogi123$',db='wisdom_india')
 cursor = mydb.cursor()
csv_data = csv.reader(file('test_csv.csv'))
for row in csv_data:
    cursor.execute("""INSERT INTO testcsv(js_id,
    js_name,js_email,js_signup)
    VALUES(%s,%s,%s," + datetime.datetime.strptime(%s, '%m-%d-%Y %h:%m').strftime('%Y-%m-%d %h:%m') + ")""", row)
mydb.commit()
cursor.close()
print "Done"

讓我知道您是否要對此進行編碼和測試,或者有任何其他問題。

這是一些更新的代碼(為了方便起見,請稍做修改),此代碼會上傳此數據:

1,2,3,01-13-2017 13:00
1,2,3,01-13-2017 13:00
1,2,3,01-13-2017 13:00

到此表:

CREATE TABLE testLoad(js_id INT UNSIGNED, js_name INT UNSIGNED, js_email INT UNSIGNED, js_signup DATETIME);

像這樣:

import csv
import MySQLdb
import datetime
mydb = MySQLdb.connect(host='localhost',user='root',passwd='',db='test')
cursor = mydb.cursor()
with open('test_csv.csv', 'r') as csvfile:
    csv_data = csv.reader(csvfile)
    for row in csv_data:
        VInsert = "INSERT INTO testLoad(js_id, js_name,js_email,js_signup) VALUES(" + row[0] + ", " + row[1] + ", " + row[2] + ", '" + datetime.datetime.strptime(row[3], '%m-%d-%Y %H:%M').strftime('%Y-%m-%d %H:%M') + "')"
        cursor.execute(VInsert)
mydb.commit()
cursor.close()
print "Done"

結果如下:

SELECT * FROM testLoad;
+-------+---------+----------+---------------------+
| js_id | js_name | js_email | js_signup           |
+-------+---------+----------+---------------------+
|     1 |       2 |        3 | 2017-01-13 13:00:00 |
|     1 |       2 |        3 | 2017-01-13 13:00:00 |
|     1 |       2 |        3 | 2017-01-13 13:00:00 |
+-------+---------+----------+---------------------+
3 rows in set (0.00 sec)

問候,

詹姆士

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM