Why my code only inserts one line?
thewholeenchilada = ("SELECT SUBSTR(email, (SELECT INSTR(email,'@'))) AS org, SUM(count) as count FROM Em GROUP BY org ORDER BY count DESC") for salida in cur.execute(thewholeenchilada): cur.execute('''INSERT INTO Counts (org, count) VALUES (?, ?)''', (salida[0],row[1])) print((str(salida[0]), salida[1])) conn.commit()
Advertisement
Answer
Avoid the loop and run one INSERT INTO ... SELECT
query. Right now you re-use same cursor outside and inside loop causing issues with processing. Either use two different cursors or efficiently combine and have database engine run action query:
sql = '''INSERT INTO Counts (org, [count]) SELECT SUBSTR(email, INSTR(email, '@')+1) AS org, SUM(count) as [count] FROM Em GROUP BY org ORDER BY count DESC ''' cur.execute(sql) conn.commit()