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"])}
Заранее спасибо!