【发布时间】:2013-04-20 03:23:22
【问题描述】:
我正在编写一个将 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 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() 对象之间获得完全匹配?感谢您的帮助。
【问题讨论】:
标签: python database sqlite sqlalchemy