pony.orm 与 create_tables=False 的关系

Relationships in pony.orm with create_tables=False

目的是让两个简单的 类 代表数据库中已经存在的两个相关表。
代码是:

from pony.orm import *
db = Database()

class System(db.Entity):
    _table_ = 'some', 'systems'
    
    system_id = PrimaryKey(int, auto=True)
    structures = Set('Structure')

class Structure(db.Entity):
    _table_ = 'some', 'structures'
    structure_id = PrimaryKey(int, auto=True)
    system_id = Required(int)
    system = Required(System)

db.bind(...)
db.generate_mapping(create_tables=False)

我尝试按照我见过的方法 in the documentation,但是执行上面的代码得到了:

psycopg2.ProgrammingError: column structures.system does not exist
LINE 1: ...ctures"."structure_id", "structures"."system_id", "structure...

HINT: Perhaps you meant to reference the column "structures.system_id".

这里缺少什么?

使用 Pony,您无需为 system_idsystem 创建两个单独的属性。相反,您需要将 system_id 指定为属性 system 的列。默认情况下,Pony 假定列名等于属性名。然后 Structure class 将类似于以下示例:

class Structure(db.Entity):
    _table_ = 'some', 'structures'
    structure_id = PrimaryKey(int, auto=True)
    system = Required(System, column='system_id')