Ось приклад переваги 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 (не-flask-sqlalchemy), ви можете робити різні припущення щодо способу збереження об'єктів у базі даних (наприклад, імен таблиць), тому вам доведеться писати власний клас адаптера.
flask-sqlalchemy
є надто старимиsqlalchemy
у програмі Flask?