У меня есть таблица со многими столбцами -
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()
Dummy
, значением столбца и, возможно, индексом, чтобы держать элементы в порядке. Это также облегчит запрос.