PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak sprawić, by PyPy, Django i PostgreSQL współpracowały ze sobą?

psycopg2cffi (aktualizacja 2015)

psycopg2cffi to kolejny zamiennik kompatybilny z psycopg2 i powinien zapewnić najlepszą wydajność PostgreSQL z PyPy. Dodaj to do swojego settings.py zachować zgodność z obydwoma:

try:
    import psycopg2
except ImportError:
    # Fall back to psycopg2cffi
    from psycopg2cffi import compat
    compat.register()

psycopg2-ctypes (2012)

Wiem też, że niektórzy ludzie używają psycopg2-ctypes.

To najłatwiejszy sposób; aby zachować zgodność z obydwoma, po prostu dodaj ten kod w swoim settings.py Django :

try:
    import psycopg2
except ImportError:
    # Fall back to psycopg2-ctypes
    from psycopg2ct import compat
    compat.register()

Testowałem to kilka wydań temu; niestety z mojego doświadczenia wynika, że ​​psycopg2-ctypes neguje niewielkie przyrosty wydajności zapewniane przez PyPy. Ale YMMV, zależy to od tego, jak ogólnie Twój kod jest przyjazny dla JIT i jaki ułamek czasu faktycznie spędzasz na uruchamianiu kodu Pythona. I może PyPy właśnie się poprawił od tego czasu.

i nie sądzę, aby psycopg2-ctypes był jeszcze gotowy na Windows

Nie próbowałem tego, ale ctypes jest niezależne od platformy. POTRZEBUJESZ, że musisz tylko upewnić się, że plik libpq.dll biblioteka jest ładowalna (znajduje się w katalogu w zmiennej środowiskowej PATH lub katalogu lokalnym) i powinna działać w systemie Windows, tak jak w systemie Linux.

pypy-postgresql

Widzę, że Alex Gaynor stworzył widelec PyPy o nazwie pypy-postgresql.

Nie sądzę, żeby to był dobry wybór na dłuższą metę. Gałąź nie była aktualizowana od ponad roku, a moje próby jej zbudowania nie powiodły się. A mimo to zakodowanie na stałe sterownika PostgreSQL w interpreterze wydaje się niewłaściwe.

Uważam, że nie ma też binariów pypy-postgresql, więc jeśli chcesz z niego korzystać, musisz sam zbudować całą gałąź PyPy. Nie dla osób o słabym sercu:zajmuje to kilkadziesiąt minut i maszyna z co najmniej 4 GB pamięci. (Oficjalne instrukcje:http://pypy.org/download.html#building-from-source)

Aby zbudować, potrzebujesz najpierw źródła. Jeśli masz zainstalowany Mercurial, możesz po prostu hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql . Jeśli nie, możesz pobrać automatyczny plik zip „tip”:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Otwórz wiersz poleceń, przejdź do zdekompresowanego katalogu, a następnie do pypy/translator/goal

Jeśli masz zainstalowane PyPy, zaleca się użycie tego do budowania:

pypy translate.py -Ojit

W przeciwnym razie:

python translate.py -Ojit

Niestety na tym kończy się moja wiedza. Otrzymuję błąd „BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG "



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyjaśnienie polecenia PostgreSQL VALUES

  2. Postgres 9.1 vs Mysql 5.6 InnoDB?

  3. Postgres BŁĄD:nie można otworzyć pliku do odczytu:Odmowa uprawnień

  4. Jak mogę wysłać żądanie http z funkcji lub wyzwalacza postgresql?

  5. Nie można po prostu użyć nazwy tabeli PostgreSQL (relacja nie istnieje)