0.知識背景
- 如下主要說明的是,連接某一個地址的數據庫裏面的不同庫的方式
- Flask-SQLAlchemy在設置SQLALCHEMY_DATABASE_URI的參數的時候,設置的數據庫是默認的數據庫,但是偶爾需要連接其他數據庫的時候,無法訪問到裏面的表格,如何操作呢?
1.數據庫模型類裏面添加參數:
class Course(db.Model):
__tablename__ = "course"
courseID = db.Column(db.Integer, primary_key=True)
courseName = db.Column(db.String(64), unique=True)
class Columns(db.Model):
__bind_key__ = 'information_schema'
__tablename__ = "COLUMNS"
TABLE_CATALOG = db.column(db.Text)
TABLE_SCHEMA = db.column(db.Text)
TABLE_NAME = db.column(db.Text)
COLUMN_NAME = db.column(db.Text)
ORDINAL_POSITION = db.column(db.INT)
2.初始化app的時候,需要綁定數據庫的信息
from flask import Flask
from configure import *
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__, template_folder='../templates', static_folder='../static')
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8mb4".format(username=USERNAME,
password=PASSWORD,
host=HOSTNAME, port=PORT,
db=DATABASE)
DB_URI_binds = "mysql+pymysql://{username}:{password}@{host}:{port}/".format(username=USERNAME,
password=PASSWORD,
host=HOSTNAME, port=PORT)
SQLAlchemy_binds_local = {
"test": DB_URI_binds + "test",
"information_schema": DB_URI_binds + "information_schema",
"world": DB_URI_binds + "world",
}
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_BINDS'] = SQLAlchemy_binds_local
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
db.create_all()
db.create_all(bind='information_schema')
db.create_all(bind='world')