В качестве фона: я создаю ORM на основе схемы уже существующей базы данных. - Это связано с тем, что приложение python не будет "владельцем" указанной базы данных.
Теперь в этой базе данных есть таблица под названием " task
" и таблица под названием " task_notBefore__task_relatedTasks
" - эта последняя является отношением "многие ко многим" между разными элементами таблицы " task
".
теперь automap_base()
имеет автоматическое обнаружение этих отношений, как описано здесь. Однако это не подходит для моего случая, и никакие отношения не строятся.
Затем я пытаюсь вручную создать отношения:
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.ext.automap import generate_relationship
from sqlalchemy.orm import sessionmaker, interfaces, relationship
from sqlalchemy import create_engine
class DBConnection:
def __init__(self, connection_url, **kwargs):
self.engine = create_engine(connection_url, **kwargs)
self._Base = automap_base()
self._Base.prepare(self.engine, reflect=True)
self.Task = self._Base.classes.task
self.Order = self._Base.classes.order
self.Poller = self._Base.classes.poller
rel = generate_relationship(self._Base, interfaces.MANYTOMANY, relationship, 'related', self.Task, self.Task,
secondary=self._Base.classes.task_notBefore__task_relatedTasks, backref='notBefore')
self._Session = sessionmaker()
self._Session.configure(bind=self.engine)
self.session = self._Session()
Однако это все еще не "ничего" делает: оно ничего не добавляет к самому себе. self.Task
"класс".
Как это сделать?