我使用SQLAlchemy的和我有一個問題WRT到一個SQLite錯誤DATATIME對象問題:用Python的SQLAlchemy
SQLite Date type only accepts Python date objects as input.
[SQL: 'SELECT anon_1.patient_sid AS sid FROM
(SELECT clinical_data.patient_sid AS patient_sid FROM clinical_data
WHERE clinical_data.event_date >= ?) AS anon_1']
我完全理解錯誤的意思,但我不明白爲什麼它是發生在我的情況。
,我通過做上述clinical_data.event_date >= ?
在查詢中的日期比較的參數,被設定爲:
valdate = datetime.strptime('1776-01-01 00:00:00', "%Y-%m-%d %H:%M:%S").date()
和,我已經驗證了的valdate
數據類型是<type 'datetime.date'>
的用於構建查詢的類是:
class ClinicalData(db.Model):
__tablename__ = 'clinical_data'
id = Column(Integer, primary_key=True, autoincrement=True)
patient_id = Column(Integer)
patient_sid = Column(Integer)
string_value = Column(String(255))
double_value = Column(Float)
data_type_id = Column(Integer)
event_date = Column(Date)
ontology_id = Column(Integer)
attribute_id = Column(Integer)
project_id = Column(Integer)
replaced_by_id = Column(Integer)
date_record_added = Column(DateTime)
parent = Column(Integer)
num_children = Column(Integer)
lft = Column(Integer)
rgt = Column(Integer)
SQLite狀態的SQLAlchemy文檔(請參見SQLAlchemy SQLite documentation),「SQLAlchemy自己的DateTime和相關類型提供日期格式和分析功能,當使用SQlite ...」
我不問如何將我的字符串對象轉換爲python datetime對象,也不問我是什麼錯誤的意思。我不確定爲什麼當一切似乎已經被充分定義時,我一直都會收到這個錯誤。
編輯
需要注意的是,當我在我的模型上event_date
屬性我收到以下錯誤SQLite DateTime type only accepts Python datetime and date objects as input.
對於這種使用DateTime
我定義valdate = datetime.strptime('1776-01-01 00:00:00', "%Y-%m-%d %H:%M:%S")
沒有date()
方法。正如預期的那樣,type(valdate)
在這種情況下產生<type 'datetime.datetime'>
。
我嘗試了創建變量valdate
與我的課程的event_date
屬性的每個組合。
我曾經嘗試過,並得到相同的錯誤。另外,如上所述,我做了一個'type(valdate)',它返回了'',這對我來說當然看起來和聞起來就像是一個'datetime'對象。我還在我的課堂中使用了數據類型。我嘗試了幾乎所有的陽光下的組合。 –
@horcle_buzz:你似乎錯過了我的答案的重要部分:'datetime'和'date'是兩種不同的類型。 SQLAlchemy想要一個'date',但是你給它一個'datetime'。 – jwodder
查看上面更正/編輯的問題以作進一步說明。 –