1

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是主键。阅读文档后我的感觉(不幸的是,它主要关注自动创建的数据库,而不是连接到现有的数据库)是约束名称/索引可能是问题所在。

我正在尝试使用OneToOneorhas_one关系来模拟第一个约束,并使用ManyToOneor关系来模拟第二个约束belongs_to。在我尝试过的每种情况下,我都会遇到错误,包括使用primaryjoin关键字参数的说明,但这也无济于事。

相关地,我在数据库上使用以下 SQL 代码定义了与OneToManyor关系类似的情况: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 中给出了与上述类似的错误。

有没有人这样做过?如何指定这些关系以使用数据库中已有的外键约束和索引?

任何帮助表示赞赏!

4

0 回答 0