1

接続文字列を介して接続された既存の MySQL データベースのテーブルを表す Elixir を使用して Python モデルを構築しようとしていmysql+pyodbcます。Elixir は列構造を問題なく反映しますが、関係を反映することはできないようです。そのため、指定しようとしています。私は、宣言形式と DSL 形式の両方で、構文に非常に苦労しています。

例として、次の SQL ステートメントで作成された 2 つのテーブル (1 対 1) にまたがる外部キー関係があります。

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が主キーです。ドキュメントを読んだ後の私の感覚 (残念ながら、自動作成されたデータベースに重点を置いており、既存のデータベースへの接続にはあまり重点を置いていません) は、制約名/インデックスがおそらく問題であるということです。

or関係を使用して最初の制約をモデル化し、OneToOneor関係を 2 番目の制約に使用しようとしています。私が試したそれぞれのケースで、キーワード引数を使用するための指示を含むエラーが発生しましたが、これも役に立ちませんでした.has_oneManyToOnebelongs_toprimaryjoin

関連して、次の 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