psycopg2cffi (обновлено в 2015 г.)
psycopg2cffi - это еще одна замена, совместимая с psycopg2, которая должна обеспечить лучшую производительность PostgreSQL с PyPy. Добавьте это в свой, settings.py
чтобы оставаться совместимым с обоими:
try:
import psycopg2
except ImportError:
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Я также знаю, что некоторые люди используют psycopg2-ctypes.
Это самый простой способ; чтобы оставаться совместимым с обоими, просто добавьте этот код в свой Django settings.py
:
try:
import psycopg2
except ImportError:
from psycopg2ct import compat
compat.register()
Я тестировал это несколько выпусков назад; к сожалению, по моему опыту, psycopg2-ctypes сводит на нет небольшой прирост производительности, предоставляемый PyPy. Но YMMV, это зависит от того, насколько JIT-дружественный ваш код в целом, и какую долю времени вы фактически тратите на запуск кода Python. И, возможно, с тех пор PyPy только улучшился.
и я не думаю, что psycopg2-ctypes еще готов для Windows
Я не пробовал этого, но ctypes не зависит от платформы. AFAICT вам просто нужно убедиться, что libpq.dll
библиотека загружается (находится в каталоге в переменной среды PATH или в локальном каталоге), и она должна работать в Windows так же, как в Linux.
pypy-postgresql
Я действительно вижу, что Алекс Гейнор создал вилку PyPy под названием pypy-postgresql.
Не думаю, что это хороший выбор в долгосрочной перспективе. Ветка не обновлялась больше года, и мои попытки построить ее не увенчались успехом. И все равно жестко закодировать драйвер PostgreSQL в интерпретаторе кажется неправильным.
Я считаю, что для pypy-postgresql также нет двоичных файлов, поэтому, если вы хотите его использовать, вам нужно будет самостоятельно создать всю ветку PyPy. Не для слабонервных: нужны десятки минут и машина с объемом памяти не менее 4 ГБ. (Официальные инструкции: http://pypy.org/download.html#building-from-source )
Для сборки вам сначала понадобится исходный код. Если у вас установлен Mercurial, вы можете просто hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Если нет, вы можете загрузить zip-архив с автоматическими подсказками: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Откройте командную строку, перейдите в распакованный каталог, а затем внутрь pypy/translator/goal
Если у вас установлен PyPy, рекомендуется использовать его для сборки:
pypy translate.py -Ojit
В противном случае:
python translate.py -Ojit
К сожалению, на этом мои знания заканчиваются. Я получаю ошибку " BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"