psycopg2cffi (atualizado em 2015)
psycopg2cffi é outro substituto compatível com psycopg2 e deve fornecer o melhor desempenho do PostgreSQL com PyPy. Adicione isso 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)
Eu 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()
Eu testei isso alguns lançamentos atrás; infelizmente, na minha experiência, psycopg2-ctypes nega os pequenos ganhos de desempenho proporcionados pelo PyPy. Mas YMMV, depende de como seu código é compatível com JIT em geral e de quanto tempo você realmente gasta executando o código Python. E talvez o PyPy tenha melhorado desde então.
e acho que o psycopg2-ctypes ainda não está pronto para o Windows
Eu não tentei isso, mas ctypes é independente de plataforma. AFAICT você só precisa ter certeza de que o
libpq.dll
library é carregável (localizada em um diretório em sua variável de ambiente PATH ou diretório local) e deve funcionar no Windows assim como no Linux. pypy-postgresql
Eu vejo que Alex Gaynor fez um fork do PyPy chamado pypy-postgresql.
Não acho que seja uma boa escolha a longo prazo. A ramificação não é atualizada há mais de um ano e minhas tentativas de construí-la falharam. E parece errado codificar um driver PostgreSQL no interpretador de qualquer maneira.
Acredito que também não existam binários do pypy-postgresql, portanto, se você quiser usá-lo, precisará construir todo o branch PyPy. Não para os fracos de coração: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, você pode simplesmente
hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. Caso contrário, você pode baixar o arquivo zip "tip" 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 de
pypy/translator/goal
Se você tiver o PyPy instalado, é recomendável usá-lo para compilar:
pypy translate.py -Ojit
Por outro lado:
python translate.py -Ojit
Infelizmente é aqui que meu conhecimento termina. Eu recebo o erro "
BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"