gpt4 book ai didi

python - 使用 SQLAlchemy、SQLite 比较日期

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:00 26 4
gpt4 key购买 nike

我正在编写一个将 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 没有对 datedatetime 类型的本地支持,并且它们存储为字符串。但是 SA 应该处理到(返回结果时)和从(插入记录时)datedatetime 对象的转换。我假设它在运行比较过滤器时也应该能够处理这个问题。我已经阅读了几个不同的 SO 线程并考虑过使用 between() 来过滤掉匹配 my_date 的对象,但是当一个确切的 == 是我要找的。我还研究过使用 .filter(cast(Table.date_field,DATE) == my_date) 来确保我正在比较对象,但这似乎也不起作用。

很明显,我遗漏了一些关于 SQLAlchemy 处理日期的方式,尤其是对于 SQLite 数据库。如何获得 SQLAlchemy 存储在 SQLite 数据库中的 Date 与作为参数提供的 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()

关于python - 使用 SQLAlchemy、SQLite 比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com