如何从 sqlalchemy 中的 session/engine/meta 获取表名及其数据类型?

Posted

技术标签:

【中文标题】如何从 sqlalchemy 中的 session/engine/meta 获取表名及其数据类型?【英文标题】:How to get table names and their data types from session/engine/meta in sqlalchemy? 【发布时间】:2021-01-10 22:59:16 【问题描述】:

假设我有一个模型:

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
    name = Column(String(50))
    fullname = Column(String(50))
    nickname = Column(String(50))

现在在代码中,我想要 User 类的所有数据类型,最好的方法是什么?

【问题讨论】:

【参考方案1】:

您可以访问模型的__table__ 属性并直接与列元素交互:

for for x in User.__table__.c:
    print(x, x.type)
>> users.id INTEGER
>> users.name VARCHAR(50)
>> users.fullname VARCHAR(50)
>> users.nickname VARCHAR(50)

【讨论】:

以上是关于如何从 sqlalchemy 中的 session/engine/meta 获取表名及其数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

多线程scoped_session中的SQLAlchemy

SQLAlchemy 中的 Session、sessionmaker、scoped_session

SQLAlchemy 中的 Sessionsessionmakerscoped_session

SQLAlchemy:直接从一对多关系中删除对象,而不使用 session.delete()

是否可以将 session.insert 用于 SQLAlchemy 中的一对一关系?

从 sqlalchemy Session 获取 mysql 线程 id