[python] Postgresql-Abfragedaten werden im Wörterbuchformat zurückgegeben

Postgresql-Abfragedaten werden im Wörterbuchformat zurückgegeben

Fassung bestätigen

psycopg2.extrasDas Modul erschien erstmals in Version 2.5.0 von psycopg2, wenn Ihre psycopg2-Version also niedriger als 2.5.0 ist, können Sie psycopg2.extrasdas Modul .

Um Ihre aktuelle psycopg2-Version zu ermitteln, führen Sie den folgenden Code in einer Python-Shell aus:

import psycopg2

print(psycopg2.__version__)

Die Ausgabe der Versionsnummer zeigt Ihnen die aktuell installierte Version von psycopg2 an. Wenn Ihre Version niedriger als 2.5.0 ist, aktualisieren Sie bitte auf die neueste Version. Wenn Sie eine Version größer oder gleich 2.5.0 haben und immer noch AttributeError: module 'psycopg2' has no attribute 'extras'Fehlermeldungen , vergewissern Sie sich, dass Sie psycopg2 korrekt installiert haben, und versuchen Sie, es erneut zu installieren.

Installationsmethode

Die Lösung für dieses Problem besteht darin, Ihre psycopg2-Version zu aktualisieren. Sie können psycopg2 von der Befehlszeile aus aktualisieren mit:

pip install --upgrade psycopg2

Wenn Sie Anaconda verwenden, können Sie psycopg2 mit dem folgenden Befehl aktualisieren:

conda install -c anaconda psycopg2

Nach dem Upgrade von psycopg2 sollten Sie psycopg2.extrasdas Modul .

Wenn Ihre psycopg2-Version 2.9.0 ist und Sie immer noch AttributeError: module 'psycopg2' has no attribute 'extras'Fehler , kann dies daran liegen, dass Sie beim Importieren des psycopg2-Moduls die falsche Syntax verwendet haben.

In psycopg2 2.9.0 psycopg2.extrashat sich die Art und Weise, wie Module importiert werden, geändert. Wenn Sie die alte Importsyntax verwenden (z. B. from psycopg2.extras import DictCursor), erhalten Sie den obigen Fehler.

In psycopg2 2.9.0 sollten Sie die folgende Importsyntax verwenden:

from psycopg2 import extras

# 然后可以使用 extras 模块中的各种功能,例如
cur = conn.cursor(cursor_factory=extras.DictCursor)

Beachten Sie, dass Sie hier from psycopg2 import extrasanstelle von from psycopg2.extras import .... Denn in psycopg2 2.9.0 extrasist es kein Untermodul mehr, sondern ein eigenständiges Modul.

Wenn Sie weiterhin AttributeError: module 'psycopg2' has no attribute 'extras'Fehler , vergewissern Sie sich, dass Sie die richtige Version von psycopg2 haben, und überprüfen Sie, ob Ihre Importsyntax korrekt ist.

anfangen zu benutzen

extras.DictCursorBei Verwendung von ist das Abfrageergebnis tatsächlich ein Tupeltyp, wobei die Elemente jedes Tupels Feldnamen und entsprechende Werte sind.

Wenn Sie das Abfrageergebnis in einen Wörterbuchtyp konvertieren müssen, können Sie das Abfrageergebnis manuell in ein Wörterbuch konvertieren. Beispielsweise kann jedes Abfrageergebnis-Tupel mit dem folgenden Code in ein Wörterbuch konvertiert werden:

import psycopg2
from psycopg2 import extras

conn = psycopg2.connect(database="mydatabase", user="myusername", password="mypassword", host="localhost", port="5432")

cur = conn.cursor(cursor_factory=extras.DictCursor)
cur.execute("SELECT * FROM mytable")

result = []
for row in cur.fetchall():
    row_dict = dict(row)
    result.append(row_dict)

print(result)

Auf diese Weise werden die Abfrageergebnisse in Form einer Liste in resultder Variablen , und jedes Listenelement ist ein Wörterbuch, wobei der Schlüssel der Feldname und der Wert der entsprechende Wert ist.

Verwenden Sie diese Option, wenn Sie möchten, dass das Ergebnis sofort zum Zeitpunkt der Abfrage und nicht manuell nach der Abfrage in einen Wörterbuchtyp konvertiert wird extras.RealDictCursor. Zum Beispiel:

import psycopg2
from psycopg2 import extras

conn = psycopg2.connect(database="mydatabase", user="myusername", password="mypassword", host="localhost", port="5432")

cur = conn.cursor(cursor_factory=extras.RealDictCursor)
cur.execute("SELECT * FROM mytable")

result = cur.fetchall()

print(result)

Auf diese Weise werden die Abfrageergebnisse in Form einer Liste in resultder Variablen , und jedes Listenelement ist ein Wörterbuch, wobei der Schlüssel der Feldname und der Wert der entsprechende Wert ist.

Die zweite Methode: Es gibt immer noch einige Probleme bei der Verwendung von RealDictCursor. Wenn Sie nicht die erwarteten wörterbuchförmigen Daten oder primitiven Daten erhalten, verwenden Sie die erste Methode, um sie zu konvertieren, was auch die Anforderungen erfüllen kann Sie finden das Problem mit der zweiten Methode. Willkommen, um Ihr Talent im Nachrichtenbereich zu zeigen.

おすすめ

転載: blog.csdn.net/qq_41604569/article/details/130326463