python - 从 SQLAlchemy 中声明定义的实例获取主键的通用方法

标签 python sqlalchemy

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/

相关文章:

python - 使用 Python Plotly 绘制气泡大小图例

python - 检测常见文件类型

python - 如何在最后 5 分钟内更改文件

python - Ansible:根据特定事实对主机进行计数

python - 使用 Graphene 和 SQLAlchemy 通过 GraphQL API 更新记录

python - 在python中使用beautifulsoup提取网页的数据丰富节点

python - 如何自动将数据库反射(reflect)到 sqlalchemy 声明性?

python - Pandas /Python/Dropna : Renaming header column names after a dropna takes place with intention to import to MySQL

python - 谷歌应用引擎和谷歌云 sql 上的 Flask SqlAlchemy

python - 连接到 RedShift 导致 SSL 错误 : certificate verify failed