sqlalchemyを使用して既存の多対多テーブルリレーションをロードする
-
07-07-2019 - |
質問
既存のPostgreSQLデータベースと対話するためにSqlAlchemyを使用しています。
多対多の関係で編成されたデータにアクセスする必要があります。ドキュメントには関係の作成方法が記載されていますが、既存の関係を適切にロードして照会する例は見つかりません。
解決
既存のリレーションのクエリは、新しいリレーションの作成と実際には変わりません。ほぼ同じコードを記述しますが、既に存在するテーブル名と列名を指定します。もちろん、 CREATE TABLE
ステートメントを発行するためにSQLAlchemyは必要ありません。
http://www.sqlalchemy.org/を参照してください。 docs / 05 / mappers.html#many-to-many 。必要なのは、例のように既存の親、子、および関連テーブルの外部キー列を指定し、 autoload = True
を指定してテーブルの他のフィールドに入力することだけです。ほとんど常にそうであるように、関連付けテーブルに追加情報が格納されている場合は、多対多のリレーションを2つの多対1のリレーションに分割する必要があります。
MySQLを使用してSQLAlchemyを学びました。そのデータベースでは、明示的なデータベース制約ではないため、外部キー関係を常に指定する必要がありました。幸運にもデータベースからより多くのことを反映できるかもしれませんが、 httpのようなものを使用することを好むかもしれません。 ://pypi.python.org/pypi/sqlautocode を使用して、データベーススキーマ全体をコーディングし、リフレクションの遅延を回避します。
所属していません StackOverflow