Ich habe den folgenden Codedynamisch in eine SQLite-Datenbank Fehler
cur.executemany("INSERT INTO "+tablename+" (name,"+item+") VALUES(?,?)",(data,))
die dynamisch Werte von data
fügt Jetzt habe ich zwei Probleme: Wenn ich die Syntax als VALUES(?,?)",(data))
ohne , after data
verwenden würde ich Erhalten Sie diesen Fehler
Error Incorrect number of bindings supplied. The current statement uses 2, and there are 4 supplied.:
, die nur mit der Syntax als gelöst wird VALUES(?,?)",(data,))
mit ,
Es löst dieses Problem und Daten werden in die Tabelle eingefügt. Aber es schafft ein weiteres Problem, das ich nicht die DB und nutzen so etwas wie
cursor = cur.execute("select * from "+tablename+" where name="+name+"")
ich diese Fehlermeldung erhalten würde abfragen kann:
Error no such column: deek:
Ich weiß nicht, wie die zur Abfrage DB mit der oben genannten Syntax.
bekam ich die obige Syntax von sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 74 supplied
Komplett-Code als Referenz:
import sqlite3
import sys
tablename='asfoor'
table_data=['Name','a','b','c']
try:
con = sqlite3.connect('dbtrials.db')
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS "+tablename+"")
cur.execute("CREATE TABLE "+tablename+" (ID INTEGER PRIMARY KEY AUTOINCREMENT ,Name TEXT, "+table_data[1]+" TEXT, "+table_data[2]+" TEXT, "+table_data[3]+" TEXT)")
name='deek'
item='a'
data=[name,item]
cur.executemany("INSERT INTO "+tablename+" (name,"+item+") VALUES(?,?)",(data,))
cursor = cur.execute("select * from "+tablename+" where name="+name+"")
for row in cursor :
print(row)
except sqlite3.Error as e:
print ("Error %s:" % e.args[0])
sys.exit(1)
finally:
if con:
con.close()
es ist das gleiche, wenn ich Werte verwenden (?,?)“, (Name, Position)) i noch Erhalten Sie den gleichen Fehler 'Die aktuelle Anweisung verwendet 2, und es gibt 4 geliefert ' –