sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan får du PyPy, Django og PostgreSQL til at arbejde sammen?

psycopg2cffi (Opdateret 2015)

psycopg2cffi er endnu en psycopg2-kompatibel erstatning og burde give den bedste PostgreSQL-ydeevne med PyPy. Føj dette til din settings.py for at forblive kompatibel med begge dele:

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

psycopg2-ctypes (2012)

Jeg ved også, at nogle mennesker bruger psycopg2-ctypes.

Dette er den nemmeste måde; for at forblive kompatibel med begge, skal du blot tilføje denne kode i din Django settings.py :

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

Jeg testede dette for et par udgivelser siden; desværre i min erfaring negerer psycopg2-ctypes de små præstationsgevinster, som PyPy giver. Men YMMV, det afhænger af, hvor JIT-venlig din kode generelt er, og hvor stor en del af tiden du rent faktisk bruger på at køre Python-kode. Og måske er PyPy bare blevet bedre siden da.

og jeg tror ikke psycopg2-ctypes er klar til Windows endnu

Jeg har ikke prøvet dette, men ctypes er platform-uafhængig. AFAICT skal du bare sikre dig, at libpq.dll biblioteket kan indlæses (placeret i en mappe i din PATH-miljøvariabel eller lokale mappe), og det burde fungere på Windows ligesom i Linux.

pypy-postgresql

Jeg kan se, at Alex Gaynor har lavet en gaffel af PyPy kaldet pypy-postgresql.

Jeg tror ikke, det er et godt valg på lang sigt. Filialen er ikke blevet opdateret i mere end et år, og mine forsøg på at bygge den er mislykkedes. Og det virker alligevel forkert at hardkode en PostgreSQL-driver i tolken.

Jeg tror heller ikke, at der er binære filer derude af pypy-postgresql, så hvis du vil bruge det, skal du selv bygge hele PyPy-grenen. Ikke for sarte sjæle:Det tager snesevis af minutter og en maskine med mindst 4 GB hukommelse. (Officielle instruktioner:http://pypy.org/download.html#building-from-source)

For at bygge skal du først bruge kilden. Hvis du har Mercurial installeret, kan du blot hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql . Hvis ikke, kan du downloade den automagiske "tip" zip-fil:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Åbn en kommandolinje, gå ind i den dekomprimerede mappe og derefter ind i pypy/translator/goal

Hvis du har PyPy installeret, anbefales det at bruge det til at bygge:

pypy translate.py -Ojit

Ellers:

python translate.py -Ojit

Det er desværre her min viden slutter. Jeg får fejlen "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG "



  1. Brug sammensat primærnøgle som fremmednøgle

  2. MySql sum elementer af en kolonne

  3. Oracle, Gør datoens første dag i måneden

  4. Brug af Oracle JDeveloper med MySQL-databasetjeneste på Oracle Cloud Platform, del 1