Question

J'ai vu un certain nombre de modules postgresql pour python tels que pygresql, pypgsql, psyco. La plupart d'entre eux sont conformes à l'API 2.0 de Python DB, certains ne sont plus développés activement. Quel module recommandez-vous? Pourquoi?

Était-ce utile?

La solution

psycopg2 semble être le plus populaire. Je n'ai jamais eu de problème avec ça. Il existe également une interface purement Python pour PostgreSQL, appelée bpgsql . Je ne le recommanderais pas avant psycopg2, mais il est récemment devenu suffisamment capable de supporter Django et est utile si vous ne pouvez pas compiler les modules C.

Autres conseils

Je suggère Psycopg à Psycopg2, car le premier semble un peu plus dur. Tout du moins selon moi. J'ai une application qui fonctionne 24h / 24 et 7j / 7 et parfois, je rencontrais des pannes de mémoire aléatoires (erreurs de double libération ou de corruption) de Psycopg2. Rien que je puisse faire déboguer rapidement ou facilement puisque ce n'est pas une erreur Python mais une erreur C. Je viens de passer à Pyscopg et je n'ai pas eu d'accident par la suite.

De même, comme indiqué dans un autre article, bpgsql semble être une très bonne alternative. Il est stable et facile à utiliser car vous n'avez pas besoin de le compiler. Le seul inconvénient est que la bibliothèque n’est pas threadsafe.

Pygresql semble bien, il existe un moyen plus direct d’interroger la base de données avec cette bibliothèque. Mais je ne sais pas à quel point celui-ci est stable.

Psycopg1 est connu pour ses meilleures performances dans les environnements fortement threadés (comme les applications Web) que Psycopg2, bien que non maintenu. Les deux sont bien écrits et solides, je choisirais l'un de ces deux selon le cas d'utilisation.

D'après mon expérience, psycopg2 est la bibliothèque la plus utilisée à cet effet. Comme vous l'avez dit, il est conforme à DB API 2.0, ce qui offre une interface solide à utiliser.

Pour ceux qui trouvent que l'API standard est un peu trop bavarde et difficile à travailler, j'ai créé une petite bibliothèque qui pourrait aider:

https://github.com/hugollm/rebel

J'utilise uniquement psycopg2 et je n'ai eu aucun problème avec ça.

J'ai utilisé pg8000 sans aucun problème au cours des 3 dernières années. Il est à jour et disponible sur pypi et fonctionne à la fois avec python2 et python3. Vous pouvez utiliser & pip; pip install pg8000 " pour l'obtenir rapidement (n'oubliez pas d'utiliser --proxy = yourproxy: votre port si vous êtes derrière un pare-feu).

Si vous êtes inquiet pour la sécurité des threads, il fournit également un score pour la sécurité des threads (voir: http: //pybrary.net/pg8000/dbapi.html et https: // www.python.org/dev/peps/pep-0249/ pour les définitions des différents niveaux de sécurité des threads) (bien que je n’aie pas encore utilisé de threads avec psql).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top