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