这是flask-sqlalchemy给您的收益超过普通sqlalchemy的示例。
假设您正在使用flask_user。
flask_user自动执行用户对象的创建和身份验证,因此它需要访问您的数据库。UserManager类通过调用抽象为数据库调用的“适配器”来实现此目的。您在UserManager构造函数中提供了一个适配器,并且该适配器必须实现以下功能:
class MyAdapter(DBAdapter):
def get_object(self, ObjectClass, id):
""" Retrieve one object specified by the primary key 'pk' """
pass
def find_all_objects(self, ObjectClass, **kwargs):
""" Retrieve all objects matching the case sensitive filters in 'kwargs'. """
pass
def find_first_object(self, ObjectClass, **kwargs):
""" Retrieve the first object matching the case sensitive filters in 'kwargs'. """
pass
def ifind_first_object(self, ObjectClass, **kwargs):
""" Retrieve the first object matching the case insensitive filters in 'kwargs'. """
pass
def add_object(self, ObjectClass, **kwargs):
""" Add an object of class 'ObjectClass' with fields and values specified in '**kwargs'. """
pass
def update_object(self, object, **kwargs):
""" Update object 'object' with the fields and values specified in '**kwargs'. """
pass
def delete_object(self, object):
""" Delete object 'object'. """
pass
def commit(self):
pass
如果您使用flask-sqlalchemy,则可以使用内置的SQLAlchemyAdapter。如果您使用的是sqlalchemy(not-flask-sqlalchemy),则可能对将对象保存到数据库的方式(例如表的名称)做出不同的假设,因此您必须编写自己的适配器类。
flask-sqlalchemy
是sqlalchemy
什么?