首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式生成sql炼金术?

以编程方式生成sql炼金术?
EN

Stack Overflow用户
提问于 2014-06-27 23:58:24
回答 1查看 161关注 0票数 0

我有一个有3个输入域的输入表单。用户可以选择填写1到3个输入字段。我正在根据他们的输入生成SQL炼金术查询。如果用户尚未填写字段,则该字段不应作为查询条件的一部分。

我想我可以用7个分支来编写代码--每个可能的查询都有一个SQL炼金术查询(例如,如果用户填写了字段2和3,但没有填写1,则查询如下所示...)。

但我认为有一种方法可以通过编程生成SQL炼金术语句来避免这种复杂的分支。有这样的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-28 02:02:32

只需按需链接过滤器,并完全避免分支:

代码语言:javascript
复制
q = session.query(Person) # .join(...).filter(...).order_by(...)

# optional filters
if form.filter_name:
    q = q.filter(Person.name == form.filter_name)
if form.filter_minimum_age:
    q = q.filter(Person.minimum_age >= form.minimum_age)
if form.tag_name:
    q = q.join(Tag, Person.tags).filter(Tag.name.like('%' + form.tag_name + '%'))

# iterate over results (only now the DB will be queried)
for person in q.all():
    # do whatever
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24456104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档