Thank you all for your answers. After pushing and popping for several days and using your manual, the following works. It’s my fault that I rethought my problem. No iter () conversion required. The objData variable is a list and is already iterable! This was one of the reasons the code didn't work.
import sqlite3
con = sqlite3.connect('test.sqlite')
cur = con.cursor()
cur.execute("create table IF NOT EXISTS fred (dat, tad)")
def newSave(className, fields, objData):
colSets = []
valSets = []
If len(fields) == 1:
colSets.append( fields[0])
valSets.append(':' + fields[0])
else:
for name in fields:
colSets.append( name)
valSets.append(':' + name)
if len(colSets)== 1:
colNames = colSets[0]
vals = valSets[0]
else:
colNames = ', '.join(colSets)
vals = ', '.join(valSets)
sql = "insert into %s (%s) values(%s)" % (className, colNames, vals)
cur.executemany(sql , objDat)
con.commit()
if __name__=='__main__':
newSave('fred', ['dat', 'tad'], [{'dat': 100, 'tad' : 42}, {'dat': 200 , 'tad' : 43}, {'dat': 3 , 'tad' : 44}, {'dat': 4 , 'tad' : 45} ])
source
share