下面的配置声明了三个数据库连接。特殊的默认值和另外两个分别名为 users(用于用户)和 appmeta 连接到一个提供只读访问应用内部数据的 sqlite 数据库):

SQLALCHEMY_DATABASE_URI = 'postgres://localhost/main'
SQLALCHEMY_BINDS = {
    'users':        'mysqldb://localhost/users',
    'appmeta':      'sqlite:path/to/appmeta.db'
}

创建和删除表
create_all() 和 drop_all() 方法默认作用于所有声明的绑定(bind),包括默认的。这个行为可以通过提供 bind 参数来定制。它可以是单个绑定(bind)名, ‘all’ 指向所有绑定(binds)或一个绑定(bind)名的列表。默认的绑定(bind)(SQLALCHEMY_DATABASE_URI) 名为 None:

>>> db.create_all()
>>> db.create_all(bind=['users'])
>>> db.create_all(bind='appmeta')
>>> db.drop_all(bind=None)

引用绑定(Binds)
当您声明模型时,您可以用 bind_key 属性指定绑定(bind):

class User(db.Model):
    __bind_key__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)

bind key 存储在表中的 info 字典中作为 ‘bind_key’ 键值。了解这个很重要,因为当您想要直接创建一个表对象时,您会需要把它放在那:

user_favorites = db.Table('user_favorites',
    db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('message_id', db.Integer, db.ForeignKey('message.id')),
    info={'bind_key': 'users'}
)

参考
http://www.pythondoc.com/flask-sqlalchemy/binds.html

# main.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from config import SQLALCHEMY_DATABASE_URI, SQLALCHEMY_BINDS

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = DefaultConfig.SQLALCHEMY_DATABASE_URI
app.config['SQLALCHEMY_BINDS'] = DefaultConfig.SQLALCHEMY_BINDS


db = SQLAlchemy(app)


class Teacher(db.Model):
	# 使用默认数据库,不需要像下面指定__bind_key__
    __tablename__ = 'tablename1' # 表名

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16))
    cardNumber = db.Column(db.String(30))
class Students(db.Model):
    __bind_key__ = 'students'  # 已设置__bind_key__ 数据库名
    __tablename__ = 'tablename2' # 表名

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(16))
    cardNumber = db.Column(db.String(30))

https://blog.csdn.net/lht_521/article/details/106642972

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐