我如何获得SQLAlchemy对象的主键的名称?
我只是想以编程方式确定一个SQLalchemy模型的主键的名称。
如果使用SQLAlchemy版本0.8或更高版本,则应使用运行时检查API 。
如果模型类是User
,唯一的主键是id
,
>>> from sqlalchemy.inspection import inspect >>> inspect(User).primary_key[0].name 'id'
如果模型类是User
并且有许多主键,
>>> from sqlalchemy.inspection import inspect >>> [key.name for key in inspect(User).primary_key] ['id', 'name']
如果使用小于0.8的SQLAlchemy版本,则应该使用class_mapper()
函数。
>>> from sqlalchemy.orm import class_mapper >>> class_mapper(User).primary_key[0].name 'id'
在这种情况下, inspect()
函数和class_mapper()
函数返回相同的对象,但是使用inspect()
更具前瞻性。
如果类是“用户”,并且只有一个主键,那么这样做*:
User.__mapper__.primary_key._list[0].name
* 从问题中移除。
假设声明模型类是User
,
>>> list(User.__table__.primary_key)[0].name 'id'
或者对于具有复合主键的Membership
>>> [pk.name for pk in Membership.__table__.primary_key] ['user_id', 'group_id']