psycopg2cffi (bijgewerkt 2015)
psycopg2cffi is nog een andere psycopg2-compatibele vervanging en zou de beste PostgreSQL-prestaties moeten bieden met PyPy. Voeg dit toe aan uw settings.py
om compatibel te blijven met beide:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Ik weet ook dat sommige mensen psycopg2-ctypes gebruiken.
Dit is de gemakkelijkste manier; om compatibel te blijven met beide, voeg je deze code toe aan je Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Ik heb dit een paar releases geleden getest; helaas doet psycopg2-ctypes in mijn ervaring de kleine prestatieverbeteringen van PyPy teniet. Maar YMMV, het hangt af van hoe JIT-vriendelijk uw code in het algemeen is en hoeveel tijd u daadwerkelijk besteedt aan het uitvoeren van Python-code. En misschien is PyPy sindsdien alleen maar verbeterd.
en ik denk dat psycopg2-ctypes nog niet klaar is voor Windows
Ik heb dit niet geprobeerd, maar ctypes is platformonafhankelijk. AFAICT je moet er alleen voor zorgen dat de libpq.dll
bibliotheek is laadbaar (bevindt zich in een map in uw PATH-omgevingsvariabele of lokale map) en het zou op Windows moeten werken, net als in Linux.
pypy-postgresql
Ik zie wel dat Alex Gaynor een fork van PyPy heeft gemaakt met de naam pypy-postgresql.
Ik denk dat dit op de lange termijn geen goede keuze is. Het filiaal is al meer dan een jaar niet bijgewerkt en mijn pogingen om het te bouwen zijn mislukt. En het lijkt sowieso verkeerd om een PostgreSQL-stuurprogramma hard te coderen in de tolk.
Ik geloof dat er ook geen binaire bestanden zijn van pypy-postgresql, dus als je het wilt gebruiken, moet je de hele PyPy-tak zelf bouwen. Niet voor bangeriken:het duurt tientallen minuten en een machine met minimaal 4 GB geheugen. (Officiële instructies:http://pypy.org/download.html#building-from-source)
Om te bouwen heb je eerst de source nodig. Als je Mercurial hebt geïnstalleerd, kun je eenvoudig hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Zo niet, dan kunt u het automagische "tip" zipbestand downloaden:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Open een opdrachtregel, ga naar de gedecomprimeerde map en ga naar pypy/translator/goal
Als je PyPy hebt geïnstalleerd, is het aanbevolen om dat te gebruiken voor het bouwen:
pypy translate.py -Ojit
Anders:
python translate.py -Ojit
Helaas houdt hier mijn kennis op. Ik krijg de foutmelding "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"