No *_*ncy 0 python postgresql sqlalchemy
如果您在 SQL Alchmey 中创建了一个实体,您可以在稍后获取您指定的列名称以在自定义语句中使用。
例如,这是数据实体的第一部分:
class ReportMetadataEntity(Base, ReportMetadata):
__tablename__ = "reports_metadata"
__mapper_args__ = {"eager_defaults": True}
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, name="id")
application_customer_id = Column(
String,
nullable=False,
name="application_customer_id",
)
Run Code Online (Sandbox Code Playgroud)
有没有办法调用 ReportMetadataEntity.id.name 或其他一些属性来获取字符串“id”?
谢谢
使用运行时检查 API,它将在传递 ORM 模型类时返回映射器:
>>> from sqlalchemy import inspect
>>>
>>> insp = inspect(ReportMetadataEntity)
>>> insp.columns.id.name
'id'
>>> # insp.c.id.name is equivalent
Run Code Online (Sandbox Code Playgroud)
数据库中的列名和类中的列名可能不同,例如:
>>> from sqlalchemy import inspect
>>>
>>> insp = inspect(ReportMetadataEntity)
>>> insp.columns.id.name
'id'
>>> # insp.c.id.name is equivalent
Run Code Online (Sandbox Code Playgroud)
映射器将通过类中的名称访问列:
foo = Column(String, name='bar') # "foo" in the class, "bar" in the database.
Run Code Online (Sandbox Code Playgroud)
相比之下,通过基础表访问需要使用数据库中的列名:
>>> tbl = MyModel.__table__
>>> tbl.c.foo.name
Traceback (most recent call last):
...
KeyError: 'foo'
>>>
>>> tbl.c.bar.name
'bar'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |