我有一个包含很多列的表 --
class Dummy(object):
__tablename__ = 'dummies'
c1 = Column(Integer)
c2 = Column(Integer)
c3 = Column(Integer)
...
cN = Column(Integer)
我可以在不手动指定每个列名称的情况下单独查询所有列吗? --
for i in range(1, N):
c_name = 'c%d' % i
dummy = DBSession().query(Dummy).filter_by(???=0).first()
谢谢。
最佳答案
您可以遍历表中的列。一、表:
from sqlalchemy.orm.attributes import manager_of_class
dummy_table = manager_of_class(Dummy).mapper.mapped_table
最后是查询
for col in dummy_table.columns:
dummy = session.query(Dummy).filter(col == 0).first()
或者,您实际上是从一个比您显示的更复杂的函数生成一组特定的列。在这种情况下,使用 getattr
。不,真的。
for i in range(1, N):
c_name = 'c%d' % i
dummy = DBSession().query(Dummy).filter(getattr(Dummy, c_name) == 0).first()
关于python - SQLAlchemy 查询动态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304271/