I created an sqlite3 database and want to use python to update it when user calls a function. In my code listing below, query#1 works, but query #2,3 doesn’t, as the query statement creates tuples, whilst the interpreter expects a string. How can I get queries with named parameters like #2,3 to work?
def save():
conn=sqlite3.connect('luckyNumbers.sqlite')
cur=conn.cursor()
v1=int(label1.cget('text'))
v2=int(label2.cget('text'))
v3=int(label3.cget('text'))
v4=int(label4.cget('text'))
v5=int(label5.cget('text'))
v6=int(label6.cget('text'))
#1) qry = "insert into luckyNumbers (N1,N2,N3,N4,N5,N6,Datetime) values ({},{},{},{},{},{},datetime())".format(v1,v2,v3,v4,v5,v6)
#2) qry = ("insert into luckyNumbers (N1,N2,N3,N4,N5,N6,Datetime) values(N1=:v1,N2=:v2,N3=:v3,N4=:v4,N5=:v5,N6=:v6,Datetime=datetime())",{"v1":v1,"v2":v2,"v3":v3,"v4":v4,"v5":v5,"v6":v6})
#3) qry = ("insert into luckyNumbers (N1,N2,N3,N4,N5,N6,Datetime) values (:v1,:v2,:v3,:v4,:v5,:v6,Datetime=datetime())",{"v1":v1,"v2":v2,"v3":v3,"v4":v4,"v5":v5,"v6":v6})
print(qry)
try:
cur.execute(qry)
conn.commit()
print('record successfully saved')
except ValueError as e:
print('Error creating record:', e)
conn.rollback
conn.close()