J'évalue et cherche à utiliser CherryPy pour un projet qui est essentiellement un front-end JavaScript du côté client (navigateur) qui parle à un service Web Python sur le back-end. Donc, j'ai vraiment besoin de quelque chose de rapide et léger sur le back-end que je peux implémenter en utilisant Python qui parle ensuite à la base de données PostgreSQL via un ORM (JSON au navigateur).
Je regarde également Django, que j'aime, car son ORM est intégré. Cependant, je pense que Django pourrait être un peu plus que ce dont j'ai vraiment besoin (c'est-à-dire plus de fonctionnalités que je n'en ai vraiment besoin == plus lent?).
Quelqu'un a-t-il une expérience avec différentes solutions Python ORM qui peuvent comparer et contraster leurs caractéristiques et fonctionnalités, leur vitesse, leur efficacité, etc.?
Réponses:
SQLAlchemy est plus complet et puissant (utilise le modèle DataMapper). Django ORM a une syntaxe plus propre et est plus facile à écrire (modèle ActiveRecord). Je ne connais pas les différences de performances.
SQLAlchemy a également une couche déclarative qui cache une certaine complexité et lui donne une syntaxe de style ActiveRecord plus similaire à l'ORM Django.
Je ne m'inquiéterais pas du fait que Django soit "trop lourd". Il est suffisamment découplé pour que vous puissiez utiliser l'ORM si vous le souhaitez sans avoir à importer le reste .
Cela dit, si j'utilisais déjà CherryPy pour la couche Web et que j'avais juste besoin d'un ORM, j'opterais probablement pour SQLAlchemy.
la source
ORDER BY
DESC
dans les documents» implique-t-il «mauvais pour le modèle d'enregistrement actif»?Si vous êtes à la recherche de poids léger et connaissez déjà les modèles déclaratifs de style django, consultez peewee: https://github.com/coleifer/peewee
Exemple:
Consultez les documents pour plus d'exemples.
la source
Storm a sans doute l'API la plus simple:
Et il est indolore de descendre dans le SQL brut lorsque vous devez:
la source
J'utilise habituellement SQLAlchemy . Il est assez puissant et est probablement l'ORM en python le plus mature.
Si vous prévoyez d'utiliser CherryPy, vous pourriez également vous pencher sur dejavu car il est de Robert Brewer (le gars qui est le chef de projet CherryPy actuel). Personnellement, je ne l'ai pas utilisé, mais je connais des gens qui l'aiment.
SQLObject est un peu plus facile à utiliser ORM que SQLAlchemy, mais il n'est pas aussi puissant.
Personnellement, je n'utiliserais pas l'ORM Django à moins que je ne prévoie d'écrire tout le projet dans Django, mais c'est juste moi.
la source
L' extension déclarative de SQLAlchemy , qui devient standard en 0.5, fournit une interface tout en un très similaire à celle de Django ou Storm. Il s'intègre également de manière transparente aux classes / tables configurées à l'aide du style de datamapper:
la source
Nous utilisons Elixir aux côtés de SQLAlchemy et nous l'avons aimé jusqu'à présent. Elixir place une couche au-dessus de SQLAlchemy qui la fait ressembler davantage aux contre-parties du "modèle ActiveRecord".
la source
Cela semble être le point de référence canonique pour l'interaction de base de données de haut niveau en Python: http://wiki.python.org/moin/HigherLevelDatabaseProgramming
De là, il semble que Dejavu implémente le modèle DataMapper de Martin Fowler de manière assez abstraite en Python.
la source
Je pense que vous pourriez regarder:
L'automne
Tempête
la source
Il n'y a aucun moyen concevable que les fonctionnalités inutilisées de Django entraînent une baisse des performances. Pourrait être utile si vous décidez de faire évoluer le projet.
la source
J'ai utilisé Storm + SQLite pour un petit projet et j'en ai été très satisfait jusqu'à ce que j'ajoute le multiprocessing. La tentative d'utilisation de la base de données à partir de plusieurs processus a entraîné une exception «La base de données est verrouillée». Je suis passé à SQLAlchemy et le même code a fonctionné sans problème.
la source
SQLAlchemy est très, très puissant. Cependant, il n'est pas sûr pour les threads, assurez-vous de garder cela à l'esprit lorsque vous travaillez avec cherrypy en mode pool de threads.
la source
Je vérifierais SQLAlchemy
C'est vraiment facile à utiliser et les modèles avec lesquels vous travaillez ne sont pas mauvais du tout.
Django utilise SQLAlchemy pour son ORMmais l'utiliser seul vous permet d'utiliser sa pleine puissance.Voici un petit exemple sur la création et la sélection d'objets orm
la source