psycopg2cffi (Cập nhật năm 2015)
psycopg2cffi là một sự thay thế khác tương thích với psycopg2 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 settings.py
của bạn để 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 settings.py
của bạn :
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; Thật đáng buồn theo kinh nghiệm của tôi, psycopg2-ctypes 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 cải thiện kể từ đó.
và tôi chưa nghĩ rằng psycopg2-ctypes đã sẵn sàng cho Windows
Tôi chưa thử cái 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ó tên 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 chỉ cầ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 hóa: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 PyPy để xây dựng:
pypy translate.py -Ojit
Nếu không:
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 gặp lỗi "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"