PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como você consegue que o PyPy, o Django e o PostgreSQL trabalhem juntos?

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 "