psycopg2cffi (Cập nhật năm 2015)
psycopg2cffi là một sự thay thế tương thích với psycopg2 khác và sẽ cung cấp hiệu suất PostgreSQL tốt nhất với PyPy. Thêm cái này vào của bạn settings.py
để vẫn tương thích với cả hai:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Tôi cũng biết rằng một số người đang sử dụng psycopg2-ctypes.
Đây là cách dễ dàng nhất; để tương thích với cả hai, chỉ cần thêm mã này vào Django của bạn settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Tôi đã thử nghiệm điều này một vài bản phát hành trước đây; Theo kinh nghiệm của tôi, thật đáng buồn là psycopg2-ctypes lại phủ nhận những lợi ích hiệu suất nhỏ mà PyPy mang lại. Nhưng YMMV, nó phụ thuộc vào mức độ thân thiện với JIT của mã nói chung và phần thời gian bạn thực sự dành để chạy mã Python. Và có lẽ PyPy mới tiến bộ hơn kể từ đó.
và tôi chưa nghĩ rằng psycopg2-ctypes đã sẵn sàng cho Windows
Tôi chưa thử điều này, nhưng ctypes độc lập với nền tảng. AFAICT bạn chỉ cần đảm bảo rằng libpq.dll
thư viện có thể tải được (nằm trong một thư mục trong biến môi trường PATH hoặc thư mục cục bộ của bạn) và nó sẽ hoạt động trên Windows giống như trong Linux.
pypy-postgresql
Tôi thấy rằng Alex Gaynor đã tạo ra một nhánh của PyPy được gọi là pypy-postgresql.
Tôi không nghĩ đây là một lựa chọn tốt về lâu dài. Chi nhánh đã không được cập nhật trong hơn một năm và nỗ lực của tôi để xây dựng nó đã thất bại. Và có vẻ như sai khi viết mã cứng một trình điều khiển PostgreSQL trong trình thông dịch.
Tôi tin rằng không có mã nhị phân nào ngoài pypy-postgresql, vì vậy nếu bạn muốn sử dụng nó, bạn cần phải tự mình xây dựng toàn bộ chi nhánh PyPy. Không dành cho người yếu tim: mất hàng chục phút và máy có bộ nhớ ít nhất 4 GB. (Hướng dẫn chính thức: http://pypy.org/download.html#building-from-source )
Để xây dựng, trước tiên bạn cần nguồn. Nếu bạn đã cài đặt Mercurial, bạn có thể đơn giản hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Nếu không, bạn có thể tải xuống tệp zip "mẹo" tự động: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Mở một dòng lệnh, đi vào thư mục đã giải nén, rồi vào bên trong pypy/translator/goal
Nếu bạn đã cài đặt PyPy, bạn nên sử dụng nó để xây dựng:
pypy translate.py -Ojit
Nếu không thì:
python translate.py -Ojit
Đáng buồn thay, đây là nơi kiến thức của tôi kết thúc. Tôi nhận được lỗi " BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"