如何解决“由于:SQL语句中未使用所有参数”错误?我在下面的代码中收到此错误

问题描述 投票:0回答:1
#""""""""""""" UPDATE FUNCTION """"""""""
    def update_data(self):
      if self.var_dep.get()=="Select Department" or self.var_std_name.get()=="" or self.var_std_id.get()=="":
         messagebox.showerror("Error","All Fields are required",parent=self.root)
      else:
          try:
              update=messagebox.askyesno("Update","Do you want to update this student details",parent=self.root)
              if update>0:
                conn=mysql.connector.connect(host="localhost", username="root", password="Umer@123", database="face_recognizer")
                my_cursor=conn.cursor()
                my_cursor.execute("update student set Dep=%s,course=%s,Year=%s,Semester=%s,Division=%s,Roll=%s,Gender=%s,Dob=%s,Email=%s,Phone=%s,Address=%s,Teacher=%s,PhotoSample=%s where Student_id=%s",(

                                                                                                                                                                          self.var_dep.get(),
                                                                                                                                                                          self.var_course.get(),
                                                                                                                                                                          self.var_year.get(),
                                                                                                                                                                          self.var_semester.get(),
                                                                                                                                                                          self.var_std_name.get(),
                                                                                                                                                                          self.var_div.get(),
                                                                                                                                                                          self.var_roll.get(),
                                                                                                                                                                          self.var_gender.get(),
                                                                                                                                                                          self.var_dob.get(),
                                                                                                                                                                          self.var_email.get(),
                                                                                                                                                                          self.var_phone.get(),
                                                                                                                                                                          self.var_address.get(),
                                                                                                                                                                          self.var_teacher.get(),
                                                                                                                                                                          self.var_radio1.get(),
                                                                                                                                                                          self.var_std_id.get()
                                                                                                                                                                           ))
              else:
                if not update:
                    return
              conn.commit()
              self.fetch_data()
              conn.close()

              messagebox.showinfo("Sucess","Student details successfully update completed",parent=self.root)
          except Exception as es:
              messagebox.showerror("Error",f"Due To:{str(es)}",parent=self.root)

我找不到错误。

mysql tkinter mysql-workbench python-3.6
1个回答
0
投票

对不起,先生,但是你的代码真的很糟糕......

也许稍微解耦

    args = (self.var_dep.get(),
        self.var_course.get(),
        self.var_year.get(),
        self.var_semester.get(),
        self.var_std_name.get(),
        self.var_div.get(),
        self.var_roll.get(),
        self.var_gender.get(),
        self.var_dob.get(),
        self.var_email.get(),
        self.var_phone.get(),
        self.var_address.get(),
        self.var_teacher.get(),
        self.var_radio1.get(),
        self.var_std_id.get())

sql = "UPDATE student SET Dep=?,course=?,Year=?,Semester=?,Division=?,Roll=?,Gender=?,Dob=?,Email=?,Phone=?,Address=?,Teacher=?,PhotoSample=?\
       WHERE Student_id=?"

my_cursor.execute(sql, args)

并且您可以看到 args 中的变量数量与查询期望的数量不同。

但是无论如何,这些事情并不是那样做的,如果有一天你决定增加或减少字段的数量,你会做什么?

© www.soinside.com 2019 - 2024. All rights reserved.