1,Flask引入数据库:
一般在app目录下__init__.py 文件下
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
app.config.from_object(config[sys_config])
db.init_app(app)
其中,config[sys_config],sys_config为‘default’.
config = {
"development": DevelopmentConfig,
"production": ProductionConfig,
"default": TestConfig,
}
class TestConfig(Config):
SQLALCHEMY_DATABASE_URI = 'postgres://localhost/main'
SQLALCHEMY_BINDS = {
'users': 'mysqldb://localhost/users',
'appmeta': 'sqlite:path/to/appmeta.db'
}
Flask-SQLAlchemy 可以链接到多个数据库,但是有一个默认的数据库链接。
要是没有指定bind值,就会使用默认的 SQLALCHEMY_DATABASE_URI
配置值
SQLALCHEMY_BINDS是key-value值的dict结构。指定默认之外的引擎配置值。
2,Model指定数据库引擎
当模型中指明了__bind_key__值,也就指明了使用SQLALCHEMY_BINDS指定值的引擎去操作当前的Model。
from app import db
class Release(AdqBaseModel, db.Model):
__bind_key__='users'
__tablename__ = 'release_request_data'
__table_args__ = {'extend_existing': True}
id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
module = db.Column(db.VARCHAR(50), default=None)
audi = db.Column(db.VARCHAR(20), default=None)
review= db.Column(db.VARCHAR(200), default=None)
serve = db.Column(db.VARCHAR(200), default=None)