psycopg2cffi (Opdateret 2015)
psycopg2cffi er endnu en psycopg2-kompatibel erstatning og burde give den bedste PostgreSQL-ydeevne med PyPy. Føj dette til din settings.py
for at forblive kompatibel med begge dele:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Jeg ved også, at nogle mennesker bruger psycopg2-ctypes.
Dette er den nemmeste måde; for at forblive kompatibel med begge, skal du blot tilføje denne kode i din Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Jeg testede dette for et par udgivelser siden; desværre i min erfaring negerer psycopg2-ctypes de små præstationsgevinster, som PyPy giver. Men YMMV, det afhænger af, hvor JIT-venlig din kode generelt er, og hvor stor en del af tiden du rent faktisk bruger på at køre Python-kode. Og måske er PyPy bare blevet bedre siden da.
og jeg tror ikke psycopg2-ctypes er klar til Windows endnu
Jeg har ikke prøvet dette, men ctypes er platform-uafhængig. AFAICT skal du bare sikre dig, at libpq.dll
biblioteket kan indlæses (placeret i en mappe i din PATH-miljøvariabel eller lokale mappe), og det burde fungere på Windows ligesom i Linux.
pypy-postgresql
Jeg kan se, at Alex Gaynor har lavet en gaffel af PyPy kaldet pypy-postgresql.
Jeg tror ikke, det er et godt valg på lang sigt. Filialen er ikke blevet opdateret i mere end et år, og mine forsøg på at bygge den er mislykkedes. Og det virker alligevel forkert at hardkode en PostgreSQL-driver i tolken.
Jeg tror heller ikke, at der er binære filer derude af pypy-postgresql, så hvis du vil bruge det, skal du selv bygge hele PyPy-grenen. Ikke for sarte sjæle:Det tager snesevis af minutter og en maskine med mindst 4 GB hukommelse. (Officielle instruktioner:http://pypy.org/download.html#building-from-source)
For at bygge skal du først bruge kilden. Hvis du har Mercurial installeret, kan du blot hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Hvis ikke, kan du downloade den automagiske "tip" zip-fil:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Åbn en kommandolinje, gå ind i den dekomprimerede mappe og derefter ind i pypy/translator/goal
Hvis du har PyPy installeret, anbefales det at bruge det til at bygge:
pypy translate.py -Ojit
Ellers:
python translate.py -Ojit
Det er desværre her min viden slutter. Jeg får fejlen "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"