首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intersect sqlalchemy查询对象

Intersect sqlalchemy查询对象
EN

Stack Overflow用户
提问于 2015-12-16 14:42:09
回答 1查看 2.3K关注 0票数 2

我有两个sqlalchemy查询对象(q1和q2) -它们都属于同一个表,并且我希望能够使这两个查询相交。因为我的数据库是MySql,所以q1.interselect(Q2)抛出SQL语法错误。有没有办法在sqlalchemy中执行intersect MySql查询?我的研究指向使用子查询、别名和左连接,但所有这些解决方案都是原生sql查询。我正在寻找sqlalchemy语法。

查询:

代码语言:javascript
复制
q1 = Model1().query().filter(Model1.description.ilike(%aws%)) 
q2 = Model1().query().filter(Model1.tags.ilike(%cloud%)) 

我想退还q1.intersect(q2)

此外,我在这里指定的查询只是更广泛的集合中的一种情况。我有一个函数,它接受一个运算符(和/或)和两个操作数(sql alchemy query对象,q1和q2),它们对于不同的函数调用可能是不同的和复杂的。在这种情况下,我不能做嵌套过滤器。我只需要使用q1和q2。

EN

回答 1

Stack Overflow用户

发布于 2015-12-17 02:00:22

对于这个简单的例子,您可以在同一个查询中使用两个过滤器

代码语言:javascript
复制
results = db.query(Model1).filter(
    Model1.description.ilike('%aws'), 
    Model1.tags.ilike('%cloud%')
)

这将返回与intersect相同的结果。

有两个独立的查询:

代码语言:javascript
复制
stmt = q2.subquery()
results = q1.outerjoin(stmt, Model1.id==stmt.c.id).filter(stmt.c.id != None)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34305467

复制
相关文章

相似问题

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