Отношения SQLAlchemy: одно поле, несколько внешних ключей - PullRequest
0 голосов
/ 04 февраля 2019

https://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html

Я перенесу свой код из SQLite в SQLAlchemy для будущей миграции на другой механизм базы данных.

В настоящее время у меня есть следующий оператор SQL для построения одной из моих таблиц:

c.execute('''
        CREATE TABLE IF NOT EXISTS cluster_relationships
        (
            plan_id INTEGER NOT NULL,
            parent_cluster TEXT,
            child_cluster TEXT NOT NULL,
            FOREIGN KEY(plan_id) REFERENCES plan_listing(plan_auto_id),
            FOREIGN KEY(plan_id, parent_cluster) REFERENCES cluster_detail(plan_id, cluster_no) ON DELETE CASCADE,
            FOREIGN KEY(plan_id, child_cluster) REFERENCES cluster_detail(plan_id, cluster_no) ON DELETE CASCADE,
            PRIMARY KEY(plan_id, parent_cluster, child_cluster)
        )
    ''')

Из моего прочтения я думаю, что я хочу достичь с помощью relationship, но я новичок в терминологии и пока не совсем щелкаю.

Я знаю, это не похоже на SQL Alchemy, я использую схему таблиц json-esq и передаю ее через конструктор

"cluster_relationships": {
    "plan_id":{"type":None, "nullable":False, "primary_key":True, "ForeignKey":ForeignKey("plan_listing.plan_auto_id")},
    "parent_cluster":{"type":String, "primary_key":True, "ForeignKey":ForeignKey("cluster_detail.cluster_no")},
    "child_cluster":{"type":String, "nullable":False, "primary_key":True, "ForeignKey":ForeignKey("cluster_detail.cluster_no")},
},

Первоначально я думал что-то вроде этогоможет работать (но это не так):

"plan_id":{"type":None, "nullable":False, "primary_key":True, "ForeignKey":ForeignKey(["plan_listing.plan_auto_id", "cluster_detail.plan_id"])}

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...