with postgres conectar con python django postgresql psycopg2 pypy
https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

python - postgres - psycopg



¿Cómo logras que PyPy, Django y PostgreSQL trabajen juntos? (2)

psycopg2cffi (Actualizado en 2015)

psycopg2cffi es otro reemplazo compatible con psycopg2 y debería proporcionar el mejor rendimiento de PostgreSQL con PyPy. Agregue esto a su settings.py para seguir siendo compatible con ambos:

try: import psycopg2 except ImportError: # Fall back to psycopg2cffi from psycopg2cffi import compat compat.register()

psycopg2-ctypes (2012)

También sé que algunas personas están usando psycopg2-ctypes.

Esta es la manera más fácil; para seguir siendo compatible con ambos, solo agregue este código en su Django settings.py :

try: import psycopg2 except ImportError: # Fall back to psycopg2-ctypes from psycopg2ct import compat compat.register()

Probé esto hace algunos lanzamientos; tristemente, en mi experiencia, psycopg2-ctypes niega las pequeñas ganancias de rendimiento que ofrece PyPy. Pero YMMV, depende de cuán amigable para JIT sea tu código en general y qué fracción de tiempo pasas corriendo el código Python. Y tal vez PyPy ha mejorado desde entonces.

y no creo que psycopg2-ctypes esté listo para Windows todavía

No lo he intentado, pero ctypes es independiente de la plataforma. AFAICT solo tiene que asegurarse de que la biblioteca libpq.dll es cargable (ubicada en un directorio en su variable de entorno PATH o directorio local) y debería funcionar en Windows como en Linux.

pypy-postgresql

Veo que Alex Gaynor ha hecho una bifurcación de PyPy llamada pypy-postgresql.

No creo que esta sea una buena opción a largo plazo. La rama no se ha actualizado durante más de un año y mis intentos de compilación han fallado. Y parece incorrecto codificar un controlador PostgreSQL en el intérprete de todos modos.

También creo que no hay binarios de pypy-postgresql, así que si quieres usarlos, necesitarás construir toda la rama PyPy tú mismo. No es para los débiles de corazón: lleva decenas de minutos y una máquina con al menos 4 GB de memoria. (Instrucciones oficiales: http://pypy.org/download.html#building-from-source )

Para construir, primero necesitas la fuente. Si tiene instalado Mercurial, simplemente puede hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql . De lo contrario, puede descargar el archivo comprimido automágico "tip": https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Abra una línea de comando, vaya al directorio descomprimido, y luego dentro de pypy/translator/goal

Si tiene PyPy instalado, se recomienda usarlo para la construcción:

pypy translate.py -Ojit

De otra manera:

python translate.py -Ojit

Tristemente aquí es donde mi conocimiento termina. BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG el error " BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG "

¿Qué bifurcación o combinación de paquetes debería uno usar para hacer que PyPy, Django y PostgreSQL jueguen bien juntos?

Sé que PyPy y Django juegan bien juntos, pero estoy menos seguro de PyPy y PostgreSQL. Veo que Alex Gaynor ha hecho una bifurcación de PyPy llamada pypy-postgresql . También sé que algunas personas están usando psycopg2-ctypes .

¿Hay alguna diferencia entre estos tenedores? ¿O deberíamos usar el estable 1.9 PyPy y usar psycopg2-ctypes? Usar las opciones de ctypes podría perjudicar el rendimiento, vea el comentario a continuación.

Además, ¿alguien ha experimentado algún inconveniente al usar PyPy con pyscopg2? Parece bastante fácil recurrir a CPython si algo no funciona bien, pero principalmente estoy buscando cosas que un programador pueda hacer antes de tiempo para prepararse.

Miré a mi alrededor, no parece que psycopg2 funcione de forma nativa con PyPy. Aunque, psycopg2-ctypes parece estar funcionando para algunas personas, hubo una discusión sobre pypy-dev . Trabajo en Windows, y no creo que psycopg2-ctypes esté listo para Windows todavía, lamentablemente.


Algunos recursos adicionales: