SQL炼金术多重条件在哪里功能

时间:2018-07-15 14:01:45

标签: python sqlalchemy

我有一个像这样的字典:

{'a':1,'b':2,...}

和类似SQL的炼金术表达式

s = select([some columns]\
.where(put here my dict with a==1 and b==2 and ...)\
.group_by(*[some columns])

但是我找不到“ where”部分的正确语法。

正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

将您的条件dict转换为可迭代对象,并用and_运算符将其解压缩。

from sqlalchemy import and_
from sqlalchemy.sql import column

conditions = {'a': 1, 'b':2}
filters = [column(key) == value for key, value in conditions.items()]

s = select([some columns]\
.where(and_(*filters))\
.group_by(*[some columns])

答案 1 :(得分:0)

在我的情况下,使用两个where子句从表中选择数据

def get_trade_images_by_trade(self,a,b):
    stmt = select([self.table_name]).where(self.table_name.c.column_name.in_([a]))
    stmt = stmt.where(self.table_name.c.column_name.in_([b]))    
    print(stmt)
    result = engine.execute(stmt)
    return result