Wie zu beheben "kann nicht anpassen-Fehler" beim speichern von binären Daten mit python-psycopg2
Lief ich über diesen Fehler drei mal heute in einem unserer Projekte. Die Umsetzung das problem und die Lösung online zur künftigen Referenz auf.
impost psycopg2
con = connect(...)
def save(long_blob):
cur = con.cursor()
long_data = struct.unpack('<L', long_blob)
cur.execute('insert into blob_records( blob_data ) values (%s)', [long_data])
Schlägt dies fehl mit der Fehlermeldung "keine Anpassung" von psycopg2.
InformationsquelleAutor Great Turtle | 2010-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist struct.entpacken gibt ein Tupel Ergebnis, auch wenn es nur einen Wert zu entpacken. Sie müssen sicherstellen, dass Sie packen das erste Element aus dem Tupel, auch wenn es nur ein Element. Ansonsten psycopg2 sql-argument-parsing wird scheitern, versuchen, zu konvertieren, die ein Tupel auf eine Zeichenfolge, die die "nicht anpassen" - Fehlermeldung.
InformationsquelleAutor Great Turtle
"Nicht anpassen" wird ausgelöst, wenn psycopg nicht wissen, die Art der Ihren
long_blob
variable. Welche Art ist es?Können Sie ganz einfach registrieren Sie einen adapter zu sagen psycopg so konvertieren Sie den Wert für die Datenbank.
Weil es ist ein numerischer Wert, sind die Chancen, dass die AsIs adapter würde schon für Sie arbeiten.
InformationsquelleAutor piro