繁体   English   中英

dict的sqlalchemy AND运算符

[英]sqlalchemy AND operator from dict

我得到这种奇怪的行为

test_dict = {'productDue' : ['foo'],'releaseDue' : ['bar']}
for attr, value in test_dict.items() :
    print attr
    and_args = [(and_(getattr(my_table,attr).in_(value)))]

这给了我:

>>> print and_(*and_args)
"my_table"."releaseDue" IN (:releaseDue_1)

然后,当我切换顺序时:

 test_dict = {'releaseDue' : ['bar'],'productDue' : ['foo']}
for attr, value in test_dict.items() :
    print attr
    and_args = [(and_(getattr(my_table,attr).in_(value)))]

我得到:

>>> print and_(*and_args)
"TDC"."releaseDue" IN (:releaseDue_1)

我不明白,我想拥有"TDC"."releaseDue" IN (:releaseDue_1) AND "TDC"."productDue" IN (:productDue_1)

请帮助

谢谢,

我已经做到了:

and_args = [ (and_(getattr(my_table,attr).in_(value))) for attr, value in test_dict.items() ]

我不是sqlalchemy专家,但这难道是因为您每次循环都要覆盖and_args吗?

做类似的事情

test_dict = {'productDue' : ['foo'],'releaseDue' : ['bar']}
and_args = []
for attr, value in test_dict.items() :
    print attr
    and_args.append( and_(getattr(my_table,attr).in_(value) )
all = and_(*and_args)

绝招?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM