Ecco un esempio di un vantaggio che flask-sqlalchemy ti offre rispetto a sqlalchemy semplice.
Supponi di utilizzare flask_user.
flask_user automatizza la creazione e l'autenticazione degli oggetti utente, quindi deve accedere al database. La classe UserManager fa ciò chiamando a qualcosa chiamato "adattatore" che astrae le chiamate al database. Fornisci un adattatore nel costruttore di UserManager e l'adattatore deve implementare queste funzioni:
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
Se stai usando flask-sqlalchemy, puoi usare SQLAlchemyAdapter incorporato. Se stai usando sqlalchemy (not-flask-sqlalchemy) potresti fare ipotesi diverse sul modo in cui gli oggetti vengono salvati nel database (come i nomi delle tabelle), quindi dovrai scrivere la tua classe adattatore.
flask-sqlalchemy
sono oltre pianura vecchiosqlalchemy
in un'applicazione Flask?