psycopg2cffi (更新于2015年)
psycopg2cffi 是另一个与 psycopg2 兼容的替代方案,应该可以在 PyPy 中提供最佳的 PostgreSQL 性能。将以下内容添加到您的 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所带来的小幅性能提升。但你的情况可能不同,这取决于你的代码是否适合JIT和你实际运行Python代码的时间比例。也可能自那时以来,PyPy已经有所改进。
而且,我认为psycopg2-ctypes还没有准备好用于Windows
我没有尝试过这个,但ctypes是跨平台的。据我所知,您只需要确保libpq.dll库可加载(位于PATH环境变量或本地目录中的目录),它应该在Windows上正常工作,就像在Linux上一样。
pypy-postgresql
我看到Alex Gaynor创建了一个名为pypy-postgresql的PyPy分支。
我认为从长远来看这不是一个好选择。该分支已经超过一年没有更新了,我的构建尝试失败了。而且,在解释器中硬编码PostgreSQL驱动程序似乎是错误的做法。
我相信现在没有pypy-postgresql的二进制文件可供使用,因此,如果要使用它,您需要自己构建整个PyPy分支。这不是一个简单的任务:需要几十分钟和至少4 GB内存的机器。(官方说明:http://pypy.org/download.html#building-from-source)
要构建,首先需要源代码。如果您已经安装了Mercurial,可以直接使用hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql。否则,您可以下载自动化的“tip” 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
"