如何解决如何在没有flask_sqlalchemy的情况下将多个数据库绑定到SQLAlchemy会话?
我想将依赖于flask_sqlalchemy的相对较小的flask API迁移到fastapi,以便可以利用其提供的功能。我需要能够使用我的应用程序查询多个不同的数据库,这对于flask_sqlalchemy来说是一项相当琐碎的任务:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
app.config['SQLALCHEMY_BINDS'] = {
'db1': SQLALCHEMY_DATABASE_URI_db1,'db2': SQLALCHEMY_DATABASE_URI_db2
}
db = SQLAlchemy(app)
# uses default uri
class Table0(db.Model):
__tablename__ = 'Table0'
ID = Column(Integer,primary_key=True)
PKG = Column(String)
TFC = Column(String)
# uses db1 instead of the default uri
class Table1(db.Model):
__bind_key__ = 'db1'
__tablename__ = 'Table1'
ID = Column(Integer,primary_key=True)
PKG = Column(String)
TFC = Column(String)
class Log(db.Model):
__bind_key__ = 'db2'
__tablename__ = 'Change_Log'
ID = Column(Integer,primary_key=True)
DESIGNED_DATE = Column(String)
CHECKED_DATE = Column(String)
APPROVED_DATE = Column(String)
问题是,我不确定如何使用标准SQLAlchemy来执行此操作,因为我将不能依赖fast_api应用程序的flask_sqlalchemy。显然,因为flask_sqlalchemy只是标准SQLAlchemy的包装器,所以是有可能的,但是我很难找到标准SQLAlchemy的这种范例的任何示例。
根据我的能力,我需要设置一个database.py文件来配置与此类似的SQLAlchemy(source):
import os
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = os.getenv("DB_CONN")
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False,autoflush=False,bind=engine)
Base = declarative_base()
问题是,我不确定如何修改它以将多个引擎绑定到会话(如果我在这里使用的术语不正确,请原谅我,因为我的深度不够。)
非常感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。