我正在编写一个将 SQLAlchemy 与 SQLite 数据库一起使用的应用程序。我相信我的数据库、表和映射配置正确,因为其他操作按预期工作。我正在尝试编写一个函数来检索其日期字段与作为函数参数提供的 datetime.date() 匹配的所有对象。这是我的第一次尝试:
def get_objects_matching_date(session,my_date):
return session.query(Table).filter(Table.date_field == my_date).all()
事件虽然我知道Table
包含符合条件的对象,但该函数不返回任何内容。
我从阅读SA 文档中知道 sqlite 没有对date
或datetime
类型的本机支持,并且它们存储为字符串。但是 SA 应该处理到(返回结果时)和从(插入记录时)date
或datetime
对象的转换。我假设它在运行比较过滤器时也应该能够处理这个问题。我已经阅读了几个不同的 SO 线程,并考虑使用between()
它来过滤掉匹配的对象,但是当我正在寻找my_date
确切的内容时,这似乎不是必需的。==
我还研究了使用.filter(cast(Table.date_field,DATE) == my_date)
以确保我得到对象的比较,但这似乎也不起作用。
显然,我遗漏了 SQLAlchemy 处理日期的方式,尤其是 SQLite 数据库。如何Date
在 SQLAlchemy 存储在 SQLite 数据库中的 a 与datetime.date()
作为参数提供的对象之间获得完全匹配?谢谢你的帮助。