如何获取SQLAlchemy对象的主键名称?

Pet*_*ter 44 sqlalchemy

我只想以编程方式确定SQLalchemy模型的主键名称.

arg*_*per 51

如果使用SQLAlchemy 0.8或更高版本,则应使用运行时检查API.

如果模型类是User唯一的主键id,

>>> from sqlalchemy.inspection import inspect
>>> inspect(User).primary_key[0].name
'id'
Run Code Online (Sandbox Code Playgroud)

如果模型类是User并且有许多主键,

>>> from sqlalchemy.inspection import inspect
>>> [key.name for key in inspect(User).primary_key]
['id', 'name']
Run Code Online (Sandbox Code Playgroud)

如果使用小于0.8的SQLAlchemy版本,则应使用该class_mapper()函数.

>>> from sqlalchemy.orm import class_mapper
>>> class_mapper(User).primary_key[0].name
'id'
Run Code Online (Sandbox Code Playgroud)

在这种情况下,inspect()函数和class_mapper()函数返回相同的对象,但使用inspect()更具有前瞻性.


Bil*_*ard 6

如果class是"User",并且只有一个主键,请执行以下操作*:

User.__mapper__.primary_key._list[0].name
Run Code Online (Sandbox Code Playgroud)

*从问题中移开.