1. 程式人生 > 資料庫 >解決python寫入mysql中datetime型別遇到的問題

解決python寫入mysql中datetime型別遇到的問題

剛開始使用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型別遇到的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。