在设法将python tkinter中分配的变量的值传递到我设置的SQL数据库时,我设法树立了自己,这是我使用的代码:
new_db, c = SetUpDataBase()
FirstName = entry1.get()
LastName =entry2.get()
DoB =entry3.get()
Gender =entry4.get()
MobileNo =entry5.get()
HomeNo =entry6.get()
Email =entry7.get()
然后是execute语句:
c.executescript('''INSERT INTO Patients (Last_Name, First_Name, Date_of_Birth, Gender,
Home_Phone_Number, Mobile_Phone_Number, Email) VALUES(?,?,?,?,?,?,?) ''',(LastName,FirstName,DoB,Gender,HomeNo,MobileNo,Email))
这导致出现错误消息:
Home_Phone_Number, Mobile_Phone_Number, Email) VALUES(?,?,?,?,?,?,?) ''',(LastName,FirstName,DoB,Gender,HomeNo,MobileNo,Email))
TypeError:函数正好采用1个参数(给定2个参数)
以及有关如何解决此问题的想法?
谢谢
答案 0 :(得分:0)
如果您查看executescript
的文档,则会看到它只有一个参数:要运行的脚本。您为它传递了两个参数:要运行的脚本和元组。 executescript
不像其他数据库方法那样采用参数替换。
解决方案是使用execute
而不是executescript
。
答案 1 :(得分:0)
我和@Bryan Dakley在一起,这里有个例子,您难道不想每次都计算字段数吗? ;)
args = (LastName,FirstName,DoB,Gender,HomeNo,MobileNo,Email)
sql = "INSERT INTO Patients VALUES(%s)"%(",".join("?"*len(args)))
c.execute(sql, args)