我正在寫一個SQLAlchemy與SQLite數據庫的應用程序。我相信我的數據庫,表和映射配置正確,因爲其他操作按預期工作。我正在嘗試編寫一個函數,用於檢索其日期字段與作爲參數提供給該函數的datetime.date()相匹配的所有對象。這是我第一次嘗試:比較日期與SQLAlchemy,SQLite
def get_objects_matching_date(session,my_date):
return session.query(Table).filter(Table.date_field == my_date).all()
事件雖然我知道Table
包含對象的標準匹配,函數返回什麼。
我從閱讀SA documentation知道,sqlite沒有對date
或datetime
類型的本地支持,並且它們存儲爲字符串。但SA應該處理轉換(返回結果時)和來自(插入記錄時)date
或datetime
對象的轉換。我假設它在運行比較過濾器時也應該能夠處理這個問題。我已經閱讀了幾個不同的SO線程,並已考慮使用between()
來篩選出與my_date
匹配的對象,但是當確切的==
是我正在尋找的對象時,似乎並不需要這樣做。我也研究過使用.filter(cast(Table.date_field,DATE) == my_date)
來確保我得到對象的比較,但是這似乎也不起作用。
顯然我錯過了SQLAlchemy處理日期的方式,特別是SQLite數據庫。我如何才能獲得存儲在SQLAlchemy的SQLite數據庫中的Date
與作爲參數提供的datetime.date()
對象之間的精確匹配?謝謝你的幫助。
爲我工作!謝謝! – fatman13 2017-03-24 06:57:00