我正在写一个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