首页 > 解决方案 > 一个烧瓶可以像下面给出的代码那样有两个多数据库吗?

问题描述

当我尝试运行该应用程序时,第一个数据库正常工作,但第二个数据库没有并返回错误 405 任何人都可以发布多个数据库的解决方案

在此处输入图像描述


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///storage.db'
db = SQLAlchemy(app)
dbTodo = SQLAlchemy(app)

class Todo(dbTodo.Model): #<=LIKE THIS
    id = dbTodo.Column(db.Integer,primary_key=True)
    content = dbTodo.Column(db.String(200),nullable=False)
    blockId = dbTodo.Column(db.Integer)

class Blocks(db.Model): #<=LIKE THIS
    id = db.Column(db.Integer,primary_key=True);
    date_create = db.Column(db.DateTime,default=datetime.utcnow)

@app.route('/addto/<int:id>',methods=['POST'])
def addto(id):
    if request.method == 'POST':
        todo = Todo(content=request.form['content'],blockId=id)
        dbTodo.session.add(todo)
        dbTodo.session.commit()
        print(Blocks.query.order_by(Blocks.date_create).all())
        return redirect('/')
    else:
        print(Blocks.query.order_by(Blocks.date_create).all())
        return "failed"


if __name__ == "__main__":
    app.run(debug=True)

标签: pythonsqlflaskflask-sqlalchemy

解决方案


你正在寻找的是绑定。查看文档: https ://flask-sqlalchemy.palletsprojects.com/en/2.x/binds/

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


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

推荐阅读