我正在寻找一种方法来反省SQLAlchemy ORM类/实体,以确定实体属性的类型和其他约束(如最大长度).
例如,如果我有一个声明性类:
class User(Base):
__tablename__ = "USER_TABLE"
id = sa.Column(sa.types.Integer, primary_key=True)
fullname = sa.Column(sa.types.String(100))
username = sa.Column(sa.types.String(20), nullable=False)
password = sa.Column(sa.types.String(20), nullable=False)
created_timestamp = sa.Column(sa.types.DateTime, nullable=False)
Run Code Online (Sandbox Code Playgroud)
我希望能够发现' fullname'字段应该是一个最大长度为100的字符串,并且可以为空.' created_timestamp'字段是DateTime,不可为空.
我正在使用SQLAlchemy在PostgreSQL数据库中的特定模式下生成表。如果该架构不存在,我想创建它。我知道PostgreSQL查询来检查架构的存在:
SELECT exists(select schema_name FROM information_schema.schemata WHERE schema_name = 'foo')
Run Code Online (Sandbox Code Playgroud)
但我想知道如何使用SQLAlchemy处理此问题。
表的结构如下:
registrant_id varchar(16)
registrant_name varchar(128)
Run Code Online (Sandbox Code Playgroud)
我想运行一个查询,显示所有符合最大允许长度的条目,即我目前为上述做的事情:
SELECT *
FROM `tm_registrant`
WHERE length( `registrant_name` ) = 128
Run Code Online (Sandbox Code Playgroud)
但是,我不想硬编码128,因为我有很多列,并且想要运行一个查询来查看所有具有至少一个完全"填充"列的条目.