【问题标题】:How can I add a contidion to a query which is combination of python and sql如何向 python 和 sql 组合的查询添加条件
【发布时间】:2022-01-19 23:26:12
【问题描述】:

我有一些我真的不知道其逻辑的东西,所以我无法想象如何将我想要的内容添加到下面的查询中。我在下面创建了一些示例字段: Select_company 是一个多选输入参数,包括 BMW、Mercedes、Audi 等。 公司名称是我表中的一列。 Select_country 也是一个多选输入参数,包括世界上所有的国家。国家名称是我表中的另一列。 我只想说,如果我从'select_company' 参数中选择BMW,我希望看到的不是所有国家,只有美国、德国和西班牙。 我可以将此条件添加到此查询并接收我想要的内容吗?我明天有最后期限。非常感谢您的帮助。

select * from "products"
where 
1 = 1

{% if select_company|length >0 %}
and company_name in ({{select_provider|array}})
{% endif%}


{% if select_country|length >0 %}
and country_name in ({{select_country|array}})
{% endif%}

由于我真的不知道到底发生了什么,我可能不会给出正确的标题或标签。对此我感到非常抱歉。

【问题讨论】:

    标签: python sql parameters jinja2 prepared-statement


    【解决方案1】:

    像 DBAPI 中的 SQL qmark 参数将以保护您免受注入的方式传递,因此您不能将 company_namecountry_name 列作为参数传递。

    另外,你真的不应该使用 Jinja2 或其他模板工具,因为它们打开了注入的大门,即使你控制了查询,第二层注入也存在并且会影响模板查询。

    但是您的问题虽然听起来很模糊,但应该仅在 SQL 中解决。如何取决于您使用的 SQL 实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多