В SQLAlchemy как проверить, является ли атрибут столбцом или просто атрибутом

#python #sqlalchemy

#python #sqlalchemy

Вопрос:

Я определил некоторые классы, наследующие declarative_base, например:

 class SomeClass(Base):
    __tablename__ = 'some_table'
    id = Column("some_table_id", Integer, primary_key=True)
    data = Column(Text)
    some_other_data = "some_other_data"
 

При создании отчета я хотел бы автоматически захватить эти атрибуты столбца, оставив только атрибуты, не относящиеся к столбцу. Есть ли способ проверить это?

Ответ №1:

Вы можете gt все столбцы класса модели, используя:

 for c in SomeClass.__table__.columns:
    print(c)
 

Вывод:

 some_table.some_table_id
some_table.data
 

Это не даст вам других простых атрибутов этого класса.

Если вы хотите получить данные из полей (столбцов) вашей таблицы, используйте приведенный выше код следующим образом

 result = session.query(*[c for c in SomeClass.__table__.c]).all()
print(result)
 

Где session находится соединение с БД.