2017-10-16 2 views
1

Ich habe die folgende Funktion, die Charge soll eine Liste der IPv6-IP-Adressen einfügencur.executemany nicht alle während Zeichenfolge konvertiert Argumente Formatierung

def insertToDb(ipList): 
    print("OK") 
    try: 
    conn = psycopg2.connect("dbname='mydb' user='myuser' host='hanno.db.elephantsql.com' password='mypass'") 
    except: 
    print("I am unable to connect to the database") 
    cur = conn.cursor() 
    try: 
    cur.executemany("INSERT INTO ip (ip) VALUES(%s)", ipList) 
    conn.commit() 
    except Exception as e: print(e) 
    print("Inserted!") 

erhalte ich die folgende Meldung

nicht alle Argumente konvertiert während der Formatierung von Strings

Welche Formatierung ist erforderlich?

+0

IPLIST sollte Sei eine Liste von Tupeln mit dem Wert – PRMoureu

+0

Ich denke, ich habe es bereits als eine Liste von Tupeln, hier ist, wie ich die Liste erstellen ipList = [] und dann füge ich die IPs mit ipList.append (Adresse) in einer Schleife, ich rufe dann insertToDb (ipLis t) – Arya

Antwort

1

Mit executemany, können Sie nur ipList auf eine Liste von Tupeln konvertieren müssen wie unten:

params = [(ip,) for ip in iplist] 
cur.executemany("INSERT INTO ip (ip) VALUES(%s)", params) 

oder Sie können auch die Art und Weise Sie die Liste erstellen ändern:

ipList.append((address,)) 
Verwandte Themen