在SQLAlchemy的核心自我引用列

问题描述 投票:0回答:1

https://docs.sqlalchemy.org/en/latest/orm/self_referential.html说明表的列如何参考下表中的ORM。列如何引用其所在表中SQLAlchemy的核心?

例如,由于person不是在它需要被引用的时间尚未确定,这将无法正常工作。

import sqlalchemy as sa


metadata = sa.MetaData()

person = sa.Table(
    "person",
    metadata,
    sa.Column("person_id", sa.BigInteger, primary_key=True, autoincrement=True),
    sa.Column("mother", None, sa.ForeignKey(person.c.person_id)),
)                                         # ^ This is an errror
python sqlalchemy
1个回答
1
投票

使用ForeignKey,即'tablename.columnkey'的字符串参数表格:

person = sa.Table(
    "person",
    metadata,
    sa.Column("person_id", sa.BigInteger, primary_key=True, autoincrement=True),
    sa.Column("mother", sa.ForeignKey("person.person_id")),  # Note: no `.c.`
)

字符串参数懒惰地处理的,因此,它可以而不必导入它们,只要它们在元数据中存在用于从其它模块例如表参考。在这种情况下,它允许引用表本身。

© www.soinside.com 2019 - 2024. All rights reserved.