Ich versuche, eine einfache INSERT-Operation zu einer PostgreSQL-Datenbank durch Python über das Psycopg2-Modul. Ich habe sehr viele der Fragen gelesen, die bereits zu diesem Thema und der Dokumentation gepostet wurden, aber ich habe anscheinend etwas eindeutig falsch gemacht und keine der Fixes scheint für meinen Code zu funktionieren.TypeError während Executemany() INSERT-Anweisung mit einer Liste von Zeichenfolgen
#API CALL + JSON decoding here
x = 0
for item in ulist:
idValue = list['members'][x]['name']
activeUsers.append(str(idValue))
x += 1
dbShell.executemany("""INSERT INTO slickusers (username) VALUES (%s)""", activeUsers
)
Die Schleife erstellt eine Liste von Strings, die wie folgt aussieht, wenn sie gedruckt:
['b2ong', 'dune', 'drble', 'drars', 'feman', 'got', 'urbo']
ich gerade versuche, den Code INSERT haben diese Strings als 1 Zeile jeder in der Tabelle.
Der angegebene Fehler beim Laufen ist:
TypeError: not all arguments converted during string formatting
Ich versuchte, die INSERT Wechsel:
dbShell.executemany("INSERT INTO slackusers (username) VALUES (%s)", (activeUsers,))
Aber das scheint, wie es nur ist die gesamte Liste als einzelne Zeichenfolge zu behandeln, wie es ergibt:
psycopg2.DataError: value too long for type character varying(30)
Was fehlt mir?
Sie für die Hilfe danken und Informationen, die ich über diese Best Practices nicht wusste. Darüber hinaus habe ich Ihren Code sowie einen commit() - Aufruf für das Verbindungsobjekt verwendet, da ich gerade festgestellt habe, dass psycopg2 automatisch Transaktionen öffnet und nur dann commit, wenn Sie dies ausdrücklich tun. –