psycopg2cffi (atualizado em 2015)
psycopg2cffi é mais um substituto compatível com o psycopg2 e deve fornecer o melhor desempenho PostgreSQL com PyPy. Adicione isto ao seu settings.py
para permanecer compatível com ambos:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
Também sei que algumas pessoas estão usando psycopg2-ctypes.
Esta é a maneira mais fácil; para ficar compatível com ambos, basta adicionar este código em seu Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Testei isso há alguns lançamentos; infelizmente, em minha experiência, psycopg2-ctypes anula os pequenos ganhos de desempenho proporcionados pelo PyPy. Mas, YMMV, depende de como seu código é amigável ao JIT em geral e de quanto tempo você realmente gasta executando o código Python. E talvez o PyPy apenas tenha melhorado desde então.
e não acho que psycopg2-ctypes esteja pronto para o Windows ainda
Eu não tentei isso, mas ctypes é independente de plataforma. AFAICT você só precisa ter certeza de que a libpq.dll
biblioteca é carregável (localizada em um diretório em sua variável de ambiente PATH ou diretório local) e deve funcionar no Windows como no Linux.
pypy-postgresql
Vejo que Alex Gaynor fez um fork do PyPy chamado pypy-postgresql.
Não acho que seja uma boa escolha a longo prazo. O ramo não é atualizado há mais de um ano e minhas tentativas de construí-lo falharam. E parece errado codificar um driver PostgreSQL no interpretador de qualquer maneira.
Eu acredito que não há binários do pypy-postgresql por aí, então se você quiser usá-lo, você precisa construir todo o branch PyPy sozinho. Não é para os fracos: leva dezenas de minutos e uma máquina com pelo menos 4 GB de memória. (Instruções oficiais: http://pypy.org/download.html#building-from-source )
Para construir, primeiro você precisa da fonte. Se você tiver o Mercurial instalado, pode simplesmente hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Caso contrário, você pode baixar o arquivo zip "dica" automagic: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Abra uma linha de comando, vá para o diretório descompactado e, em seguida, dentro pypy/translator/goal
Se você tiver o PyPy instalado, é recomendado usá-lo para a construção:
pypy translate.py -Ojit
De outra forma:
python translate.py -Ojit
Infelizmente, é aqui que meu conhecimento termina. Recebo o erro " BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"