接続文字列を介して接続された既存の 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関係を使用して最初の制約をモデル化し、OneToOne
or関係を 2 番目の制約に使用しようとしています。私が試したそれぞれのケースで、キーワード引数を使用するための指示を含むエラーが発生しましたが、これも役に立ちませんでした.has_one
ManyToOne
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 では上記と同様のエラーが発生します。
誰もこれを以前にやったことがありますか?これらの関係を指定して、データベースに既に存在する既存の外部キー制約とインデックスを使用するにはどうすればよいですか?
どんな助けでも大歓迎です!