python
  • psycopg2
  • 2017-10-16 9 views 1 likes 
    1

    J'ai la fonction suivante qui est censé lot insérer une liste d'adresses IP IPv6cur.executemany pas tous les arguments convertis au cours de formatage de chaîne

    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!") 
    

    Je reçois le message suivant

    pas tous les arguments converti pendant le formatage de chaîne

    Quelle est la bonne mise en forme nécessaire?

    +0

    iplist devrait être une liste de tuples contenant la valeur – PRMoureu

    +0

    Je pense que je l'ai déjà comme une liste de tuples, voici comment je crée la liste ipList = [] puis j'ajoute les IPs avec ipList.append (adresse) dans une boucle, je l appelle alors insertToDb (ipLis t) – Arya

    Répondre

    1

    Avec executemany, vous aurez juste besoin de convertir ipList à une liste de tuples comme ci-dessous:

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

    ou vous pouvez également changer la façon dont vous construisez la liste:

    ipList.append((address,)) 
    

     Questions connexes

    • Aucun problème connexe^_^