psycopg2cffi (Aggiornato 2015)
psycopg2cffi è 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()
L'ho testato 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 è compatibile con JIT il tuo codice in generale e da quale frazione di tempo dedichi effettivamente all'esecuzione del codice Python. E forse PyPy è appena migliorato da allora.
e non penso che psycopg2-ctypes sia ancora pronto per Windows
Non l'ho provato, ma ctypes è indipendente dalla piattaforma. AFAICT devi solo assicurarti che il libpq.dll
la libreria è caricabile (situata in una directory nella variabile di ambiente PATH o nella directory locale) e dovrebbe funzionare su Windows proprio come in 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 per più di un anno e i miei tentativi di costruirlo sono falliti. E sembra comunque sbagliato codificare un driver PostgreSQL nell'interprete.
Credo che non ci siano nemmeno binari di pypy-postgresql, quindi se vuoi usarlo, dovresti creare tu stesso l'intero ramo PyPy. Non per i deboli di cuore:ci vogliono 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 installato Mercurial, 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 dentro pypy/translator/goal
Se hai installato PyPy, ti consigliamo di usarlo per la compilazione:
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
"