2

私はこの奇妙な振る舞いをしています

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)

助けてください

4

2 に答える 2

1

ありがとうございました、

私はこれでそれを行うことができました:

and_args = [ (and_(getattr(my_table,attr).in_(value))) for attr, value in test_dict.items() ]
于 2013-07-16T14:40:56.087 に答える
0

私は 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)

トリックをしますか?

于 2013-07-16T14:37:34.133 に答える