psycopg2cffi (оновлено 2015 р.)
psycopg2cffi - це ще одна заміна, сумісна з psycopg2, і вона повинна забезпечити найкращу продуктивність PostgreSQL за допомогою PyPy. Додайте це до свого, settings.py
щоб залишатися сумісними з обома:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Я також знаю, що деякі люди використовують psycopg2-ctypes.
Це найпростіший спосіб; щоб залишатися сумісними з обома, просто додайте цей код у свій Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
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-файл "tip": 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
"