我正在尝试使用Elixir构建Python模型,Elixir表示通过mysql+pyodbc
连接字符串连接的现有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
或has_one
关系为第一个约束建模,并为第二个约束建立ManyToOne
或belongs_to
关系。在我尝试的每种情况下,我都遇到了错误,包括使用primaryjoin
关键字参数的说明,但这也没有帮助。
相关地,我遇到类似的情况,OneToMany
或has_many
关系,在数据库中使用以下SQL代码定义:
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中给出了类似的错误。
以前有人这样做过吗?如何指定这些关系以使用数据库中已有的现有外键约束和索引?
感谢任何帮助!