我正在寻找一种结合flask-sqlalchemy
这是示例设置
extensions.py
db = SQLAlchemy()
my_model.py
from extensions import db
class MyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
// ... some more fields
my_model_repository.py
from my_model import MyModel
class MyModelRepository:
def get_all():
MyModel.query.all()
现在,我想以某种方式将db
注入到MyModelRepository
中,以便在进行单元测试时可以注入一个mock
或内存数据库,而不必处理任何问题。全局配置或标志。
这是我希望它看起来如何的一个例子
from my_model import MyModel
class MyModelRepository:
def __init__(self, db):
self.db = db
def get_all():
db.query(MyModel).all()
但这似乎不可能,因为MyModel
继承自db.Model
,而db
已经是SQLAlchemy
的特定实例。
使数据库可注入依赖它的任何组件的适当方法是什么?