Отношения в pony.orm с create_tables = False - PullRequest
0 голосов
/ 29 мая 2018

Намерение состоит в том, чтобы иметь два простых класса, представляющих две связанные таблицы, которые уже существуют в БД.
Код:

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)

Я пытался следовать подходу, который видел в документации , но выполнение приведенного выше кода дает мне:

psycopg2.ProgrammingError: столбец структура.system не существует
LINE 1: ... ctures "."имя_структуры", "структуры". "системный_ид", "структура ...

Подсказка: возможно, вы имели в виду ссылку на столбец" структуры.system_id ".

Чего не хватаетздесь

1 Ответ

0 голосов
/ 30 мая 2018

С Pony вы не создаете два отдельных атрибута для system_id и system.Вместо этого вам нужно указать system_id в качестве столбца для атрибута system.По умолчанию Pony предполагает, что имя столбца равно имени атрибута.Тогда класс Structure будет выглядеть в следующем примере:

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