我如何获得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']