解決python寫入mysql中datetime型別遇到的問題
阿新 • • 發佈:2020-01-09
剛開始使用python,還不太熟練,遇到一個datetime資料型別的問題:
在mysql資料庫中,有一個datetime型別的欄位用於儲存記錄的日期時間值。python程式中有對應的一個datetime變數dt。
現在需要往mysql資料庫中新增記錄,每次新增時,將datetime型變數dt寫入mysql資料庫tablename表中exTime欄位裡。
問題,如何寫入?除錯時,總是無法寫入。
執行環境:windows10 python 3.6 mysql5.6.38
執行結果提示:
Process finished with exit code 0
#------看我寫的程式------------- import datetime import pymysql.cursors conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='',db='test',charset='utf8',cursorclass=pymysql.cursors.DictCursor) #中間略去dt賦值部分... print(dt.strftime('%Y-%m-%d %H:%M:%S')) #執行結果是 2001-1-2 11:00:00 sql_insert=sql_insert="INSERT into tablename(exTime) values(%s)" %(dt.strftime("%Y-%m-%d %H:%M:%S")) #如果此處寫成sql_insert=sql_insert="INSERT into tablename(exTime) values('2001-1-2 11:00:00')" 則可以執行 try: with conn.cursor() as csor1: csor1.execute(sql_insert) conn.commit() csor1.close() except Exception as e: #錯誤回滾 conn.rollback() finally: conn.close() ###-----------------------------------
後來在網上查了一下,mysql中datetime型別欄位,賦值時最好用str_to_date函式轉化成mysql的datetime型別
因此,把上面的程式改了一下:
sql_insert=sql_insert="INSERT into tablename(exTime) values(str_to_date(\'%s\','%%Y-%%m-%%d %%H:%%i:%%s'))" %(dt.strftime("%Y-%m-%d %H:%M:%S"))
重新執行,通過!
以上這篇解決python寫入mysql中datetime型別遇到的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。