Oto przykład korzyści, jakie daje flask-sqlalchemy w porównaniu do zwykłej sqlalchemy.
Załóżmy, że używasz flask_user.
flask_user automatyzuje tworzenie i uwierzytelnianie obiektów użytkowników, więc musi mieć dostęp do Twojej bazy danych. Klasa UserManager robi to, wywołując coś, co nazywa się „adapterem”, który wyodrębnia wywołania bazy danych. Dostarczasz adapter w konstruktorze UserManager, a adapter musi implementować następujące funkcje:
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
Jeśli używasz flask-sqlalchemy, możesz użyć wbudowanego SQLAlchemyAdapter. Jeśli używasz sqlalchemy (nie-flask-sqlalchemy), możesz przyjąć różne założenia dotyczące sposobu, w jaki obiekty są zapisywane w bazie danych (np. Nazwy tabel), więc będziesz musiał napisać własną klasę adaptera.
flask-sqlalchemy
są przestarzałesqlalchemy
w aplikacji Flask?