PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie bringen Sie PyPy, Django und PostgreSQL dazu, zusammenzuarbeiten?

psycopg2cffi (Aktualisiert 2015)

psycopg2cffi ist ein weiterer psycopg2-kompatibler Ersatz und sollte die beste PostgreSQL-Leistung mit PyPy bieten. Fügen Sie dies zu Ihrer settings.py hinzu um mit beiden kompatibel zu bleiben:

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

psycopg2-ctypes (2012)

Ich weiß auch, dass einige Leute psycopg2-ctypes verwenden.

Dies ist der einfachste Weg; Um mit beiden kompatibel zu bleiben, fügen Sie einfach diesen Code in Ihre Django settings.py ein :

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

Ich habe dies vor ein paar Releases getestet; Leider negiert psycopg2-ctypes meiner Erfahrung nach die kleinen Leistungssteigerungen, die PyPy bietet. Aber YMMV, es hängt davon ab, wie JIT-freundlich Ihr Code im Allgemeinen ist und welchen Bruchteil der Zeit Sie tatsächlich mit der Ausführung von Python-Code verbringen. Und vielleicht hat sich PyPy seitdem einfach verbessert.

und ich glaube nicht, dass psycopg2-ctypes schon bereit für Windows ist

Ich habe das nicht ausprobiert, aber ctypes ist plattformunabhängig. AFAICT müssen Sie nur sicherstellen, dass die libpq.dll Die Bibliothek ist ladbar (befindet sich in einem Verzeichnis in Ihrer PATH-Umgebungsvariablen oder im lokalen Verzeichnis) und sollte unter Windows genau wie unter Linux funktionieren.

pypy-postgresql

Ich sehe, dass Alex Gaynor einen Fork von PyPy namens pypy-postgresql erstellt hat.

Langfristig halte ich das für keine gute Wahl. Der Zweig wurde seit mehr als einem Jahr nicht aktualisiert und meine Versuche, ihn zu erstellen, sind gescheitert. Und es scheint sowieso falsch zu sein, einen PostgreSQL-Treiber im Interpreter fest zu codieren.

Ich glaube, es gibt auch keine Binärdateien von pypy-postgresql. Wenn Sie es also verwenden möchten, müssen Sie den gesamten PyPy-Zweig selbst erstellen. Nichts für schwache Nerven:Es dauert Dutzende von Minuten und eine Maschine mit mindestens 4 GB Speicher. (Offizielle Anleitung:http://pypy.org/download.html#building-from-source)

Zum Bauen benötigen Sie zunächst die Quelle. Wenn Sie Mercurial installiert haben, können Sie einfach hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql . Wenn nicht, können Sie die automagische „tip“-Zip-Datei herunterladen:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Öffnen Sie eine Befehlszeile, gehen Sie in das dekomprimierte Verzeichnis und dann in pypy/translator/goal

Wenn Sie PyPy installiert haben, wird empfohlen, dies zum Erstellen zu verwenden:

pypy translate.py -Ojit

Ansonsten:

python translate.py -Ojit

Leider endet hier mein Wissen. Ich erhalte die Fehlermeldung „BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG "