SQLAlchemy 是否提供了一种通用方法来从声明定义的实例中获取主键,因此如果:
Base = declarative_base()
class MyClass(Base):
__tablename__ = 'mytable'
key = Column(Integer, primary_key=True)
我能做到:
>>> a = MyClass(key=1)
>>> a.generic_get_primary_key() # <-- does it exist ??
1
最佳答案
您可以为此目的使用检查
:
http://docs.sqlalchemy.org/en/latest/core/inspection.html
将映射对象的实例传递给检查,返回一个描述该对象的 InstanceState
。
此状态还包含标识:
Base = declarative_base()
class MyClass(Base):
__tablename__ = 'mytable'
key = Column(Integer, primary_key=True)
a = MyClass(key=1)
from sqlalchemy.inspection import inspect
pk = inspect(a).identity
print pk
将给予:
(1,)
由于主键可以包含多个列,因此身份通常是一个元组,其中包含作为主键一部分的所有列值。
在您的情况下,这只是 key
。
关于python - 从 SQLAlchemy 中声明定义的实例获取主键的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932166/