python - 一个烧瓶可以像下面给出的代码那样有两个多数据库吗?
问题描述
当我尝试运行该应用程序时,第一个数据库正常工作,但第二个数据库没有并返回错误 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)
解决方案
你正在寻找的是绑定。查看文档: 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)
推荐阅读
- asp.net - 将 datalist 链接按钮文本值返回到标签中
- java - 在 servlet 和 JSP 之间的 MVC 中存储会话变量(错误状态 500)
- javascript - (JavaScript) 如何创建文档的快照以使新更改不应用于它
- php - 无法修改标头信息 - 第 24 行 x.php 中的(错误)标头已发送
- javascript - 如何捕获 div 的位置,以便在页面重新加载时我可以拥有该位置
- python - 如何在 Flask 中实现同时登录功能?
- java - 用Java从文件中扫描整数和字符串
- vb.net - 没有数据时读取失败
- php - 我如何创建第二个自动增量列mysql,其默认值在每次插入新用户时都会增加
- python - 为什么张量流安装失败