フラスコ-sqlalchemyを使用して「モデル」の特定のスキーマを定義したいと思います。sqlalchemy自体でテーブルオブジェクトを作成すると、スキーマ名を渡すためのパラメーターがあります。
これをflask-sqlalchemyで行うにはどうすればよいですか?
フラスコ-sqlalchemyを使用して「モデル」の特定のスキーマを定義したいと思います。sqlalchemy自体でテーブルオブジェクトを作成すると、スキーマ名を渡すためのパラメーターがあります。
これをflask-sqlalchemyで行うにはどうすればよいですか?
モデルクラスを定義するときは、次を使用します。
__table_args__ = {"schema":"schema_name"}
多分それは他の誰かの狩猟を救うでしょう。
今後の参考のために:
db = flask.ext.sqlalchemy.SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'your_default_schema_db_uri'
app.config['SQLALCHEMY_BINDS'] = {'other_schema': 'your_other_db_uri'}
class TableA(db.Model):
    # This belongs to Default schema, it doesn't need specify __bind_key__
    ...
class TableB(db.Model):
      # This belongs to other_schema
    __bind_key__ = 'other_schema'
    ...
これが私がやった方法ですが、可能であればもっと良い方法も探しています-
db = flask.ext.sqlalchemy.SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'your_default_schema_db_uri'
class Entity():
    __table_args__ = {
        'schema': 'schema_name'
    }
    # common columns below
class TableA(Entity, db.Model):
    # This belongs to Default schema, it doesn't need specify __bind_key__
    __table_args__ = {'schema' : Entity.__table_args__["schema"], 
                      'comment': 'TableA'}
class TableB(Entity, db.Model):
      # This belongs to other_schema
    __table_args__ = {'schema' : Entity.__table_args__["schema"], 
                      'comment': 'TableA'}