将相同的模型绑定到sqlalchemy中的不同模式

时间:2015-11-09 21:55:28

标签: python binding sqlalchemy

我想在两个不同的数据库中创建我的模型(例如,在Postgres和Redshift中),具有不同的shema名称。例如,在postgres中我有架构 public ,在redshift架构中称为 data

例如,我有两个引擎:

SQLALCHEMY_BINDS = {
    'bind1':    app.config['SQLALCHEMY_DATABASE_URI'],
    'data'  'redshift+psycopg2://dbuser:pass@dbhost.redshift.amazonaws.com:5439/mydb'
}

这是一个模型:

class Campaign(Base):
    __tablename__ = 'campaign'
    #__bind_key__ = 'data'
    campaignid = Column(Integer, primary_key=True)
    campaign_name = Column(String(120))
    smth = Column(BigInteger)

首先,我尝试创建声明性基础并明确绑定它(这很好但不能解决我的问题'我需要为每个模式/引擎定义两次模型):

engine = create_engine('redshift+psycopg2://dbuser:pass@dbhost.redshift.amazonaws.com:5439/mydb')
Base = declarative_base()
Base.metadata = MetaData(bind=engine, schema='data')
Base.metadata.create_all(bind=engine)

我想使用相同的模型并在不同的DB上以不同的模式创建它。所以我可以使用 bind_key 来指示我想要使用哪个数据库,但也为不同的数据库指出不同的模式名称

感谢任何提示。

0 个答案:

没有答案