147 votes

flask-sqlalchemy ou sqlalchemy

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.

4voto

2-complex Points 113

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X