如何使用sqlalchemy在子句中编写多列

vvladymyrov

请建议是否有使用SQLAlchemy在子句中编写查询多列的方法?

这是实际查询的示例:

SELECT  url FROM pages WHERE (url_crc, url) IN ((2752937066, 'http://members.aye.net/~gharris/blog/'), (3799762538, 'http://www.coxandforkum.com/'));

我有一个包含两列主键的表,我希望避免再添加一个仅用作索引的键。

PS我正在使用mysql DB。

更新:此查询将用于批处理-所以我需要在in子句中放入几百对。通过IN子句方法,我希望知道我可以在一个查询中坚持多少对的固定限制。像Oracle默认有1000个枚举限制。

查询的长度(以字符为单位)可能会限制使用AND / OR组合。这将是可变的且难以预测。

vvladymyrov

我最终使用了基于test()的解决方案:用命名的bind vars生成了[((:: a1,:b1),(:a2,:b2),...)中的((a,b), vars的值。

params = {}
for counter, r in enumerate(records):
    a_param = "a%s" % counter
    params[a_param] = r['a']
    b_param = "b%s" % counter
    params[b_param] = r['b']
    pair_text = "(:%s,:%s)" % (a_param, b_param)
    enum_pairs.append(pair_text)
multicol_in_enumeration = ','.join(enum_pairs)
multicol_in_clause = text(
    " (a,b) in (" + multicol_in_enumeration + ")")
q = session.query(Table.id, Table.a,
                            Table.b).filter(multicol_in_clause).params(params)

我考虑过使用mysql upserts的另一种选择,但这会使整个数据库对于其他数据库引擎的可移植性甚至比使用multicolumn in子句更不易移植。

更新SQLAlchemy具有sqlalchemy.sql.expression.tuple _(* clauses,** kw)构造,可用于相同目的。(我还没有尝试过)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用sqlalchemy查询使用多列的in子句

来自分类Dev

如何使用SQLAlchemy更改LEFT JOIN子句中的表顺序

来自分类Dev

如何在WHERE子句CASE语句中返回多列

来自分类Dev

如何在WHERE子句中编写条件?

来自分类Dev

sqlalchemy在where子句中动态使用and_

来自分类Dev

sqlalchemy在where子句中动态使用and_

来自分类Dev

多列WHERE子句中的PostgreSQL索引

来自分类Dev

多列的WHERE子句中的AND条件

来自分类Dev

如何使用where子句中的列条目过滤查询

来自分类Dev

如何在WHERE子句中使用SELECT语句编写SQL DELETE语句?

来自分类Dev

列“列”必须出现在GROUP BY子句中-SQLAlchemy

来自分类Dev

如何在select语句中添加列并在where子句中使用ir

来自分类Dev

如何在where子句中编写多级条件

来自分类Dev

如何动态更改where子句中的列?

来自分类Dev

在“ where”子句中使用新列

来自分类Dev

在“ where”子句中使用新列

来自分类Dev

使用AS时where子句中的未知列

来自分类Dev

在SQLAlchemy中的HAVING()子句中使用标签

来自分类Dev

使用SQLAlchemy核心从where子句中排除某些内容

来自分类Dev

在where子句中具有多列的子查询

来自分类Dev

如何在SQL中的SUM子句中使用not in子句

来自分类Dev

如何编写(可选子句中的联合)或(带有union子句的可选)?

来自分类Dev

如何编写连接 2 个表的 where 子句,在子句中有 OR

来自分类Dev

如何在where子句中使用列默认值来标识默认值

来自分类Dev

如何在Pandas DataFrame where子句中使用特定列的值?

来自分类Dev

如何使用AngularJS而不是在查询子句中按两列的差异对表进行排序?

来自分类Dev

使用 UPDATE 时如何将 TTL 设置为 where 子句中提到的列

来自分类Dev

select子句中的order / group by子句中使用的列是否必须?

来自分类Dev

使用多列的参数化IN子句

Related 相关文章

  1. 1

    使用sqlalchemy查询使用多列的in子句

  2. 2

    如何使用SQLAlchemy更改LEFT JOIN子句中的表顺序

  3. 3

    如何在WHERE子句CASE语句中返回多列

  4. 4

    如何在WHERE子句中编写条件?

  5. 5

    sqlalchemy在where子句中动态使用and_

  6. 6

    sqlalchemy在where子句中动态使用and_

  7. 7

    多列WHERE子句中的PostgreSQL索引

  8. 8

    多列的WHERE子句中的AND条件

  9. 9

    如何使用where子句中的列条目过滤查询

  10. 10

    如何在WHERE子句中使用SELECT语句编写SQL DELETE语句?

  11. 11

    列“列”必须出现在GROUP BY子句中-SQLAlchemy

  12. 12

    如何在select语句中添加列并在where子句中使用ir

  13. 13

    如何在where子句中编写多级条件

  14. 14

    如何动态更改where子句中的列?

  15. 15

    在“ where”子句中使用新列

  16. 16

    在“ where”子句中使用新列

  17. 17

    使用AS时where子句中的未知列

  18. 18

    在SQLAlchemy中的HAVING()子句中使用标签

  19. 19

    使用SQLAlchemy核心从where子句中排除某些内容

  20. 20

    在where子句中具有多列的子查询

  21. 21

    如何在SQL中的SUM子句中使用not in子句

  22. 22

    如何编写(可选子句中的联合)或(带有union子句的可选)?

  23. 23

    如何编写连接 2 个表的 where 子句,在子句中有 OR

  24. 24

    如何在where子句中使用列默认值来标识默认值

  25. 25

    如何在Pandas DataFrame where子句中使用特定列的值?

  26. 26

    如何使用AngularJS而不是在查询子句中按两列的差异对表进行排序?

  27. 27

    使用 UPDATE 时如何将 TTL 设置为 where 子句中提到的列

  28. 28

    select子句中的order / group by子句中使用的列是否必须?

  29. 29

    使用多列的参数化IN子句

热门标签

归档