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_id
和 system
创建两个单独的属性。相反,您需要将 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')
目的是让两个简单的 类 代表数据库中已经存在的两个相关表。
代码是:
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_id
和 system
创建两个单独的属性。相反,您需要将 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')