2008-09-27 14 views
22

He visto una serie de módulos postgresql para python como pygresql, pypgsql, psyco. La mayoría de ellos son compatibles con Python DB API 2.0, algunos ya no se desarrollan activamente. ¿Qué módulo recomienda? ¿Por qué?Módulos Python PostgreSQL. ¿Cuál es el mejor?

+1

[este artículo] (https: // wiki .postgresql.org/wiki/Python) ofrece una descripción general de todas las opciones y debe estar actualizado. La nota para 'Psycopg2' dice" _El controlador de python más popular, requerido para la mayoría de los frameworks de Python + Postgres_ ". – J0ANMM

+0

De hecho, @ J0ANMM. Debería actualizar la publicación para confirmar que la respuesta que había elegido (hace casi 10 años) todavía está actualizada. Gracias. – jmissao

Respuesta

15

psycopg2 parece ser el más popular. Nunca he tenido ningún problema con eso. También hay una interfaz pura de Python para PostgreSQL, llamada bpgsql. No lo recomendaría sobre psycopg2, pero recientemente ha sido lo suficientemente capaz para admitir Django y es útil si no puede compilar módulos C.

+2

Otra opción pura de Python: pg8000 (http://pybrary.net/pg8000/) – bernie

1

Psycopg1 es conocido por un mejor rendimiento en entornos con muchos hilos de rosca (como aplicaciones web) que Psycopg2, aunque no se mantiene. Ambos están bien escritos y son sólidos, elegiría uno de estos dos según el caso de uso.

+1

Psycopg 1 está terriblemente desactualizado: su uso no es recomendable. – piro

2

Sugiero Psycopg sobre Psycopg2 ya que el primero parece un poco más sable. Al menos en mi experiencia. Tengo una aplicación que funciona las 24 horas, los 7 días de la semana y, a veces, recibí bloqueos de memoria aleatorios (errores dobles de corrupción o de corrupción) de Psycopg2. No pude depurar nada rápido o fácilmente, ya que no es un error de Python sino un error de C. Me cambié a Pyscopg y no tuve ningún problema después de eso.

Además, como se dijo en otra publicación, bpgsql parece una muy buena alternativa. Es estable y fácil de usar ya que no necesita compilarlo. El único lado malo es que la biblioteca no es segura.

Pygresql parece agradable, hay una forma más directa de consultar la base de datos con esta biblioteca. Pero no sé cuán estable es esta.

+1

Como se indicó en otro comentario, hay muchos errores en Psycopg 1 que se han corregido en Psycopg 2 en aproximadamente 4 años de desarrollo. Informe cualquier error a la lista de correo. – piro

0

Yo solo uso psycopg2 y no tuve problemas con eso.

0

He usado pg8000 sin ningún problema en los últimos 3 años. Está actualizado y disponible en pypi y funciona en python2 y python3. Puedes usar "pip install pg8000" para obtenerlo rápidamente (no olvides usar --proxy = yourproxy: yourport si estás detrás de un firewall).

Si le preocupa la seguridad de subprocesos, también proporciona una puntuación para seguridad de subprocesos (consulte: http://pybrary.net/pg8000/dbapi.html y https://www.python.org/dev/peps/pep-0249/ para obtener definiciones de los diferentes niveles de seguridad de subprocesos) (aunque todavía no he utilizado subprocesos con psql).

+1

Enlace al proyecto - https://pypi.org/project/pg8000 –

0

En mi experiencia, psycopg2 es la biblioteca más utilizada para esto. Como dijiste, es compatible con DB API 2.0, que ofrece una interfaz sólida para trabajar.

Para aquellos que encuentran la API estándar para ser un poco demasiado prolijo y difícil de trabajar, he hecho una pequeña biblioteca que podría ayudar:

https://github.com/hugollm/rebel

Cuestiones relacionadas