Multiple Databases¶
Because you can use Flask-SQLAlchemy (using the framework SQLA class) multiple databases is supported.
You can configure them the following way, first setup config.py:
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_BINDS = {
'my_sql1': 'mysql://root:password@localhost/quickhowto',
'my_sql2': 'mysql://root:password@externalserver.domain.com/quickhowto2'
}
The SQLALCHEMY_DATABASE_URI is the default connection this is where the framework’s security tables will be created. The SQLALCHEMY_BINDS are the extra binds.
Now you can configure which models reside on which database using the __bind_key__ property
class Model1(Model):
__bind_key__ = 'my_sql1'
id = Column(Integer, primary_key=True)
name = Column(String(150), unique = True, nullable=False)
class Model2(Model):
__bind_key__ = 'my_sql2'
id = Column(Integer, primary_key=True)
name = Column(String(150), unique = True, nullable=False)
class Model3(Model):
id = Column(Integer, primary_key=True)
name = Column(String(150), unique = True, nullable=False)
- On this example:
Model1 will be on the local MySql instance with db ‘quickhowto’.
Model2 will be on the externalserver.domain.com MySql instance with db ‘quickhowto2’.
Model3 will be on the default connection using sqlite.