我有一段代碼試圖將 adatetime.datetime插入 ms-access 資料庫的date/time(不是extended date/time)欄位,但我不斷收到資料型別不匹配錯誤訊息。所以我的問題是,我使用哪種型別?
我嘗試使用此代碼
print(type(timeCET))
>>>
datetime.datetime
和
crsr.execute("insert into WeatherAnalisis(Time_UTC) values ('timeCET.timedate')")
cnxn.commit()
>>>>
pyodbc.DataError: ('22018', '[22018] [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. (-3030) (SQLExecDirectW)')
但這似乎不起作用
uj5u.com熱心網友回復:
您直接將 datetime 物件的名稱作為參考文字包含在 SQL 陳述句中。因此,Access 會引發錯誤,因為您試圖將文字字串值'timeCET.timedate'(實際日期時間變數的名稱而不是值)插入日期時間列。
相反,請考慮 SQL 引數化。(不要連接,因為單引號無法在 Access SQL 中包含日期)。
# PREPARED STATEMENT WITH QMARK
sql = "insert into WeatherAnalisis (Time_UTC) values (?)"
# EXECUTE QUERY WITH BINDED PARAM
crsr.execute(sql, timeCET)
cnxn.commit()
uj5u.com熱心網友回復:
雖然原始問題沒有指定變數的timeCET來源,但一旦可以看出它是datetime來自其型別的。
問題似乎是其中之一matching types。
鑒于此,這里是如何轉換為字串:
import datetime as dt
# create a datetime
t = dt.datetime.utcnow()
print(t)
print(type(t))
# now convert to string
u = t.strftime("%m/%d/%Y, %H:%M:%S")
print(u)
print(type(u))
這是輸出:
2022-03-26 17:00:52.998699
<class 'datetime.datetime'>
03/26/2022, 17:00:52
<class 'str'>
原始型別(對于變數t)是datetime.
現在(對于變數u)將其更改為string.
現在可以將其決議到資料庫中(或更改為有效的格式)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451409.html
