2016-05-06 14 views
0

Ich versuche, aus Ergebnisliste wiederholen und versuchen, Werte in der Tabelle exdata einzufügen, aber ich sehe allenthalben für die Lösung, aber nichts ist für mich arbeitenEinfügen von Tabellenwerten aus der Liste Iteration in Python

if not result: 
    print 'list is empty' 
else: 
    for i in xrange(0,len(result)): 
     for item in result[i].iteritems(): 
      query="INSERT INTO exdata (cve_id,severity, published,modified) \ 
        VALUES ('%s', '%s', '%s', '%s')" % (item[i], item[1][0],item[1][1],item[1][2]) 
     cursor.execute(query) 

Antwort

0

Sie haben Rufen Sie commit auf, um die Werte tatsächlich in den DB einzufügen.
Beachten Sie auch, dass Ihre execute außerhalb der inneren Schleife ist, so dass nur die Abfrage der letzten Iteration ausgeführt wird.

if not result: 
    print 'list is empty' 
else: 
    for i in xrange(0,len(result)): 
     for item in result[i].iteritems(): 
      query="INSERT INTO exdata (cve_id,severity, published,modified) \ 
        VALUES ('%s', '%s', '%s', '%s')" % (item[i], item[1][0],item[1][1],item[1][2]) 
      cursor.execute(query) 

      cursor.commit() 
0

Ich sehe zwei Probleme in Ihrem Code:

1) Abfrage in Schleife
2 ausführen müssen) hinzufügen COMMIT-Anweisung zur Befestigung

if not result: 
    print 'list is empty' 
else: 
    for i in xrange(0,len(result)): 
     for item in result[i].iteritems(): 
      query="INSERT INTO exdata (cve_id,severity, published,modified) \ 
        VALUES ('%s', '%s', '%s', '%s')" % (item[i], item[1][0],item[1][1],item[1][2]) 
      cursor.execute(query) 
     connection.commit() 
+0

sollte es db.commit kein Cursor sein. – Gurprit

+0

aktualisiert, danke –

0

ändert sich, wenn Sie MySQLdb verwenden möchten eine mehrreihige Einsatz zu tun, versuchen executemany zu verwenden:

import MySQLdb 

db = MySQLdb.connect("myhost", "myuser", "mysecret", "mydb") 
# users is a list of (userid, first_name, last_name, company) 
c = db.cursor() 
c.executemany("""INSERT INTO users 
(userid, first_name, last_name, company) 
VALUES (%s, %s, %s, %s)""", users) 
db.commit() 
db.close() 

In MySQLdb wird dies intern in eine mehrzeilige INSERT konvertiert, die Berichten zufolge 2-3 Ordnungen von Magnitude schneller ist.

Verwandte Themen