psycopg2cffi(2015 年更新)
psycopg2cffi是另一个与 psycopg2 兼容的替代品,应该使用 PyPy 提供最佳的 PostgreSQL 性能。将此添加到您的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 环境变量或本地目录中的目录中)并且它应该像在 Linux 中一样在 Windows 上工作。
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
. 如果没有,您可以下载自动魔术“提示”压缩文件: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
”