psychopg2cffi (aktualizováno v roce 2015)
psycopg2cffi je další náhrada kompatibilní s psycopg2 a měla by poskytovat nejlepší výkon PostgreSQL s PyPy. Přidejte toto do souboru settings.py
aby zůstala kompatibilní s oběma:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psychopg2-ctypes (2012)
Také vím, že někteří lidé používají psycopg2-ctypes.
Toto je nejjednodušší způsob; Chcete-li zůstat kompatibilní s oběma, stačí přidat tento kód do vašeho Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Testoval jsem to před několika verzemi; bohužel podle mých zkušeností psycopg2-ctypes neguje malé zvýšení výkonu, které PyPy poskytuje. Ale YMMV, to záleží na tom, jak je váš kód přívětivý k JIT obecně a jaký zlomek času ve skutečnosti strávíte spuštěním kódu Python. A možná se PyPy od té doby jen zlepšil.
a nemyslím si, že psycopg2-ctypes je ještě připraven pro Windows
Nezkoušel jsem to, ale ctypes je nezávislý na platformě. AFAICT, stačí se ujistit, že libpq.dll
knihovnu lze načíst (umístěnou v adresáři ve vaší proměnné prostředí PATH nebo místním adresáři) a měla by fungovat ve Windows stejně jako v Linuxu.
pypy-postgresql
Vidím, že Alex Gaynor vytvořil fork PyPy s názvem pypy-postgresql.
Nemyslím si, že je to z dlouhodobého hlediska dobrá volba. Větev nebyla aktualizována déle než rok a mé pokusy o její vybudování selhaly. A stejně se zdá špatné napevno kódovat ovladač PostgreSQL v interpretu.
Věřím, že neexistují žádné binární soubory pypy-postgresql, takže pokud jej chcete používat, musíte si celou větev PyPy vytvořit sami. Nic pro slabé povahy:trvá to desítky minut a stroj s alespoň 4 GB paměti. (Oficiální pokyny:http://pypy.org/download.html#building-from-source)
K sestavení potřebujete nejprve zdroj. Pokud máte nainstalovaný Mercurial, můžete jednoduše hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Pokud ne, můžete si stáhnout soubor zip s automatickým "tipem":https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Otevřete příkazový řádek, přejděte do dekomprimovaného adresáře a poté do pypy/translator/goal
Pokud máte nainstalovaný PyPy, je doporučeno jej použít pro stavbu:
pypy translate.py -Ojit
Jinak:
python translate.py -Ojit
Bohužel zde mé znalosti končí. Zobrazuje se mi chyba "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"