python flask SQLALchemy连接两个数据库怎么实现
要求,一个单独的文件配置一个数据库配置,共2个配置文件
在其他地方如何使用,执行SQL
python flask SQLALchemy连接两个数据库怎么实现
要求,一个单独的文件配置一个数据库配置,共2个配置文件
在其他地方如何使用,执行SQL
该回答引用chatgpt:有不对的地方可以联系我,我在调整
可以通过在 Flask 应用中使用 SQLAlchemy 的 bind_key 参数,为每个数据库指定一个名称,然后在模型中使用这个名称指定模型对应的数据库连接。
以下是一个使用 Flask SQLAlchemy 连接两个数据库的示例:
首先,创建两个数据库配置文件,例如 config1.py 和 config2.py,分别定义两个数据库连接的相关配置,如下所示:
config1.py
SQLALCHEMY_DATABASE_URI = 'database_uri_for_db1'
SQLALCHEMY_TRACK_MODIFICATIONS = False
config2.py
SQLALCHEMY_DATABASE_URI = 'database_uri_for_db2'
SQLALCHEMY_TRACK_MODIFICATIONS = False
接着,在 Flask 应用的初始化中,可以通过加载这两个配置文件来创建两个数据库连接:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config1')
app.config.from_object('config2')
db1 = SQLAlchemy(app, bind_key='db1')
db2 = SQLAlchemy(app, bind_key='db2')
在上面的代码中,我们使用 bind_key 参数为每个数据库连接指定一个名称,这里分别为 db1 和 db2。
接下来,在模型中,可以通过设置 bind_key 属性来指定模型对应的数据库连接:
class User(db1.Model):
__tablename__ = 'users'
__bind_key__ = 'db1'
id = db1.Column(db1.Integer, primary_key=True)
name = db1.Column(db1.String(80))
class Order(db2.Model):
__tablename__ = 'orders'
__bind_key__ = 'db2'
id = db2.Column(db2.Integer, primary_key=True)
total_price = db2.Column(db2.Float)
在上面的代码中,User 模型对应的数据库连接为 db1,而 Order 模型对应的数据库连接为 db2。
最后,可以通过访问相应的数据库连接对象,执行 SQL 语句,例如:
# 访问 db1 连接对象,执行 SQL 查询
db1.session.execute('SELECT * FROM users')
# 访问 db2 连接对象,执行 SQL 查询
db2.session.execute('SELECT * FROM orders')