我正在编写一个使用 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
or datetime
类型并将它们存储为字符串。但 SA 应该处理转换(返回结果时)和转换(插入记录时)date
or datetime
对象。我认为在运行比较过滤器时它也应该能够处理这个问题。我读过几个不同的 SO 线程并考虑过使用between()
过滤掉匹配的对象my_date
,但这似乎没有必要,当一个确切的==
就是我正在寻找的。我也研究过使用.filter(cast(Table.date_field,DATE) == my_date)
以确保我能够对对象进行比较,但这似乎也不起作用。
显然,我错过了有关 SQLAlchemy 处理日期的方式的一些信息,尤其是 SQLite 数据库。我怎样才能得到a之间的精确匹配Date
通过 SQLAlchemy 存储在 SQLite 数据库中datetime.date()
作为参数提供的对象?谢谢你的帮助。
上述答案都不适合我,但我通过此链接找到了解决方案:https://gist.github.com/danielthiel/8374607
使用sqlachemy的func.DATE()
函数如下:
from sqlalchemy import func
session.query(Table).filter(func.DATE(Table.date_field) == my_date).all()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)