mysql+pyodbc
我正在尝试使用 Elixir 构建 Python 模型,该模型表示通过连接字符串连接的现有 MySQL 数据库中的表。Elixir 毫不费力地反映了列结构,但似乎无法反映关系,所以现在我正在尝试指定这些关系。我对语法很感兴趣,无论是声明式的还是 DSL 的形式。
例如,我在使用以下 SQL 语句创建的两个表(一对一)之间建立了外键关系:
ALTER TABLE db.person
ADD CONSTRAINT fk_person_id_ref_person_program_id
FOREIGN KEY (person_id) REFERENCES db.person_program(person_id);
ALTER TABLE db.person_program
ADD CONSTRAINT fk_person_program_id_ref_person_id
FOREIGN KEY (person_id) REFERENCES db.person(person_id);
在这两个表中,person_id
是主键。阅读文档后我的感觉(不幸的是,它主要关注自动创建的数据库,而不是连接到现有的数据库)是约束名称/索引可能是问题所在。
我正在尝试使用OneToOne
orhas_one
关系来模拟第一个约束,并使用ManyToOne
or关系来模拟第二个约束belongs_to
。在我尝试过的每种情况下,我都会遇到错误,包括使用primaryjoin
关键字参数的说明,但这也无济于事。
相关地,我在数据库上使用以下 SQL 代码定义了与OneToMany
or关系类似的情况:has_many
ALTER TABLE db.person_by_age
ADD CONSTRAINT fk_person_by_age_id_ref_person_id
FOREIGN KEY (person_id) REFERENCES db.person(person_id);
这里,person_id
是表的主键person
,而不是表的主键person_by_age
。这个约束在 Elixir 中给出了与上述类似的错误。
有没有人这样做过?如何指定这些关系以使用数据库中已有的外键约束和索引?
任何帮助表示赞赏!