用于现有数据库关系的SQLAlchemy / Elixir语法

时间:2012-03-16 15:53:02

标签: sql python-2.7 sqlalchemy foreign-key-relationship python-elixir

我正在尝试使用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是主键。在阅读文档之后(不幸的是,重点放在自动处理的数据库而不是连接到现有的数据库上),我的感觉是约束名称/索引可能是问题。

我正在尝试使用OneToOnehas_one关系为第一个约束建模,并为第二个约束建立ManyToOnebelongs_to关系。在我尝试的每种情况下,我都遇到了错误,包括使用primaryjoin关键字参数的说明,但这也没有帮助。

相关地,我遇到类似的情况,OneToManyhas_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_idperson表的主键,但不是person_by_age表的主键。此约束在Elixir中给出了类似的错误。

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

感谢任何帮助!

0 个答案:

没有答案