Je suis nouveau à la fois dans flask et sqlalchemy, je viens de commencer à travailler sur une application flask, et j'utilise sqlalchemy pour le moment. Je me demandais s'il y avait un avantage significatif à utiliser flask-sqlalchemy plutôt que sqlalchemy. Je n'ai pas trouvé suffisamment de motivations dans http://packages.python.org/Flask-SQLAlchemy/index.html ou peut-être que je n'ai pas compris la valeur ! !! J'apprécierais vos éclaircissements.
Réponse
Trop de publicités?Voici un exemple d'avantage de flask-sqlalchemy par rapport à sqlalchemy.
Supposons que vous utilisez flask_user.
flask_user automatise la création et l'authentification des objets utilisateurs, il doit donc accéder à votre base de données. La classe UserManager fait cela en faisant appel à quelque chose appelé "adaptateur" qui abstrait les appels à la base de données. Vous fournissez un adaptateur dans le constructeur de 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 l'adaptateur SQLAlchemy intégré. Si vous utilisez sqlalchemy (pas flask-sqlalchemy), vous pouvez faire des hypothèses différentes sur la façon 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.
- Réponses précédentes
- Plus de réponses