psycopg2cffi (Uppdaterad 2015)
psycopg2cffi är ännu en psycopg2-kompatibel ersättare och bör ge den bästa PostgreSQL-prestandan med PyPy. Lägg till detta i din settings.py
för att förbli kompatibel med båda:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Jag vet också att vissa människor använder psycopg2-ctypes.
Detta är det enklaste sättet; för att förbli kompatibel med båda, lägg bara till den här koden i din Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Jag testade detta för några släpp sedan; Tyvärr, enligt min erfarenhet, förnekar psycopg2-ctypes de små prestandavinsterna som PyPy ger. Men YMMV, det beror på hur JIT-vänlig din kod är i allmänhet och hur stor del av tiden du faktiskt spenderar på att köra Python-kod. Och kanske PyPy bara har förbättrats sedan dess.
och jag tror inte psycopg2-ctypes är redo för Windows än
Jag har inte provat detta, men ctypes är plattformsoberoende. AFAICT måste du bara se till att libpq.dll
biblioteket är laddningsbart (finns i en katalog i din PATH-miljövariabel eller lokala katalog) och det bör fungera på Windows precis som i Linux.
pypy-postgresql
Jag ser att Alex Gaynor har gjort en gaffel av PyPy som heter pypy-postgresql.
Jag tror inte att det här är ett bra val på lång sikt. Filialen har inte uppdaterats på mer än ett år och mina försök att bygga den har misslyckats. Och det verkar fel att hårdkoda en PostgreSQL-drivrutin i tolken ändå.
Jag tror att det inte finns några binärer där ute av pypy-postgresql heller, så om du vill använda det måste du bygga hela PyPy-grenen själv. Inte för svaga hjärtan:det tar tiotals minuter och en maskin med minst 4 GB minne. (Officiella instruktioner:http://pypy.org/download.html#building-from-source)
För att bygga behöver du först källan. Om du har Mercurial installerat kan du helt enkelt hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Om inte kan du ladda ner den automagiska "tip" zip-filen:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Öppna en kommandorad, gå in i den dekomprimerade katalogen och sedan in i pypy/translator/goal
Om du har PyPy installerat, rekommenderas det att du använder det för att bygga:
pypy translate.py -Ojit
Annars:
python translate.py -Ojit
Tyvärr är det här min kunskap slutar. Jag får felet "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"