Voici un exemple d'un avantage que flask-sqlalchemy vous offre par rapport à sqlalchemy ordinaire.
Supposons que vous utilisez flask_user.
flask_user automatise la création et l'authentification des objets utilisateur, il doit donc accéder à votre base de données. La classe UserManager fait cela en appelant à quelque chose appelé "adaptateur" qui fait abstraction des appels de base de données. Vous fournissez un adaptateur dans le constructeur UserManager et l'adaptateur doit implémenter ces fonctions:
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
Si vous utilisez flask-sqlalchemy, vous pouvez utiliser le SQLAlchemyAdapter intégré. Si vous utilisez sqlalchemy (pas-flask-sqlalchemy), vous pouvez faire des hypothèses différentes sur la manière dont les objets sont enregistrés dans la base de données (comme les noms des tables), vous devrez donc écrire votre propre classe d'adaptateur.
flask-sqlalchemy
sont sur le bon vieuxsqlalchemy
dans une application Flask?