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
ฉันเห็นว่า Alex Gaynor ได้สร้างทางแยกของ PyPy ที่เรียกว่า pypy-postgresql
ฉันไม่คิดว่านี่เป็นทางเลือกที่ดีในระยะยาว สาขาไม่ได้รับการอัปเดตมานานกว่าหนึ่งปีแล้วและความพยายามของฉันในการสร้างมันล้มเหลว และดูเหมือนจะผิดในการฮาร์ดโค้ดไดรเวอร์ PostgreSQL ในล่ามอยู่ดี
ฉันเชื่อว่าไม่มีไบนารีจาก pypy-postgresql เช่นกันดังนั้นหากคุณต้องการใช้คุณจะต้องสร้างสาขา PyPy ทั้งหมดด้วยตัวเอง ไม่เหมาะสำหรับคนใจร้อนใช้เวลาหลายสิบนาทีและเครื่องที่มีหน่วยความจำอย่างน้อย 4 GB (คำแนะนำอย่างเป็นทางการ: 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
"