与flask-sqlalchemy一起使用依赖项注入

时间:2020-08-21 09:29:34

标签: flask dependency-injection sqlalchemy flask-sqlalchemy

我正在寻找一种结合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的特定实例。

使数据库可注入依赖它的任何组件的适当方法是什么?

0 个答案:

没有答案