gpt4 book ai didi

python - 原始 sql 中的 sqlalchemy 日期过滤器

转载 作者:太空狗 更新时间:2023-10-30 02:49:41 25 4
gpt4 key购买 nike

我曾经创建过像

这样的动态过滤器
q = Session.query(Table)    
search_conditions = "%s ILIKE '%s%s%s'" % (str(nm), '%', val ,'%')
q = q.filter(search_conditions)

它适用于字符串和整数语句,但现在我需要像这样过滤日期。我有一个日期列并尝试像这样过滤它

date = '01.01.2011'
fd,fm,fy = date.split('.')
from_date = dt.date(int(fy),int(fm),int(fd))

ffilter = "%s > %r" %(str(ft), fromdate)
q = q.filter(ffilter)

你能帮我解决这个问题吗?

最好的问候,谢尔盖

最佳答案

这看起来不像非常惯用的 sqlalchemy。您已经有了一个用于构建查询的 Table 对象,您还可以使用它来表达生成的 WHERE 子句中的谓词,甚至是动态的:

date = '01.01.2011'
from_date = dt.datetime.strptime(date, "%d.%m.%Y").date()
q = session.query(Table) \
.filter(Table.c[nm].like('%%%s%%' % val) ) \
.filter(Table.c[ft] > from_date)

如果有的话,这是使用 sqlalchemy 的主要优势。

这种模式几乎扩展到 sqlalchemy 的每个角落,例如,如果您必须以动态方式指定要从哪个中选择,这可以通过访问 MetaData.tables 来处理 属性,也是一个字典。

如果您真的需要向用户公开全面的表达能力,那么只允许他们输入 SQL 语句可能会更好,将 sqlalchemy 风格的生成查询与用户输入的表达式混合可能不会帮助您或您的用户。您可以使用 SQLalchemy 生成查询框架,然后让用户编辑它们以按照他们需要的方式自定义它们。

关于python - 原始 sql 中的 sqlalchemy 日期过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084045/

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