psycopg2cffi (aggiornato 2015)
psycopg2cffi è ancora un altro sostituto compatibile con psycopg2 e dovrebbe fornire le migliori prestazioni PostgreSQL con PyPy. Aggiungilo al tuo settings.py
per rimanere compatibile con entrambi:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
So anche che alcune persone usano psycopg2-ctypes.
Questo è il modo più semplice; per rimanere compatibile con entrambi, aggiungi questo codice nel tuo Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Ho provato questo alcune versioni fa; purtroppo nella mia esperienza, psycopg2-ctypes nega i piccoli guadagni in termini di prestazioni offerti da PyPy. Ma YMMV, dipende da quanto il tuo codice è compatibile con JIT in generale e dalla frazione di tempo che impieghi effettivamente a eseguire codice Python. E forse da allora PyPy è solo migliorato.
e non credo che psycopg2-ctypes sia ancora pronto per Windows
Non l'ho provato, ma ctypes è indipendente dalla piattaforma. AFAICT devi solo assicurarti che la libpq.dll
libreria sia caricabile (situata in una directory nella tua variabile d'ambiente PATH o directory locale) e dovrebbe funzionare su Windows proprio come su Linux.
pypy-postgresql
Vedo che Alex Gaynor ha creato un fork di PyPy chiamato pypy-postgresql.
Non credo che questa sia una buona scelta a lungo termine. Il ramo non è stato aggiornato da più di un anno ei miei tentativi di costruirlo sono falliti. E comunque sembra sbagliato codificare un driver PostgreSQL nell'interprete.
Credo che non ci siano nemmeno i binari là fuori di pypy-postgresql, quindi se vuoi usarlo, dovresti costruire tu stesso l'intero ramo PyPy. Non per i deboli di cuore: bastano decine di minuti e una macchina con almeno 4 GB di memoria. (Istruzioni ufficiali: http://pypy.org/download.html#building-from-source )
Per costruire, hai prima bisogno della fonte. Se hai Mercurial installato, puoi semplicemente hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. In caso contrario, puoi scaricare il file zip "tip" di automagic: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Apri una riga di comando, vai nella directory decompressa e poi all'interno pypy/translator/goal
Se hai installato PyPy, ti consigliamo di usarlo per creare:
pypy translate.py -Ojit
Altrimenti:
python translate.py -Ojit
Purtroppo è qui che finisce la mia conoscenza. Ottengo l'errore " BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"