Вот пример преимущества 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
в приложении Flask?