使用 python 显示的列数与第 1 行的值数不匹配错误

Column count doesn't match value count at row 1 error displayed using python

我是 python 的初学者。当我将记录插入数据库时​​。不添加记录。我在数据库中有两列 idname。 id 设置为 mysql 自动递增。

from tkinter import *
import mysql.connector  # Importing Connector package

def Ok():
    result = e1.get()

    mysqldb=mysql.connector.connect(host="localhost",user="root",password="",database="empdb")#established connection between your database
    mycursor=mysqldb.cursor()

    try:
   mycursor.execute("insert into records values(%s)", (result,))
   mysqldb.commit()
   print('Record inserted successfully...')

  except Exception as e:
   print(e)
 
    mysqldb.rollback()
    mysqldb.close()

   raise Exception("Sorry, no numbers below zero")

root = Tk()
root.title("Employee Salary Calculation System")
root.geometry("300x400")

global e1

Label(root, text="Employee Name").place(x=10, y=10)

e1 = Entry(root)
e1.place(x=100, y=10)


Button(root, text="Cal", command=Ok ,height = 1, width = 3).place(x=10, y=150)

root.mainloop()

显示错误

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\kobinath\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:/Users/kobinath/PycharmProjects/pythonProject4/employee.py", line 20, in Ok
    raise Exception("Sorry, no numbers below zero")
Exception: Sorry, no numbers below zero

我得到上面的错误。

在你的代码中,这一行

raise Exception("Sorry, no numbers below zero")

无论如何都会被执行。请检查您要执行的操作并进行修复。

但是无法插入记录的原因是:

mycursor.execute("insert into records values(result)")

请注意,引号内的整个字符串作为 SQL 语句执行。您确定“结果”在您的上下文中有效吗?这可能会使 MySQL 引发错误。我相信你的意思是这样的:

mycursor.execute("insert into records values(%s)", (result,))

如果你想在python中捕获异常,你可以使用下面的代码:

try:
    x = int(input('Enter a number'))
except Exception as e:
    print (e)

这将帮助您找出发生的错误类型。

您在尝试将数据插入 table 时遇到问题。

让我们假设我有一个名为 customers 的 table 并且它有两列 nameaddress,那么我可以编写以下语句来插入一个记录到table.

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

val = ("John", "Highway 21")

mycursor.execute(sql, val)

mydb.commit()

然后给commit 提交记录。如果您有不止一列,请务必在 INSERT 语句中提供这些详细信息。