Exception in Tkinter callback

在连接数据库使用python的图形工具直接插入修改时,出现了下面的错误
有没有学霸帮忙看看

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "D:\pythonProject1\Suppliersinfo.py", line 113, in Submit
    cur.execute(sql)
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\cursors.py", line 158, in execute
    result = self._query(query)
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\cursors.py", line 325, in _query
    conn.query(q)
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\connections.py", line 779, in _read_query_result
    result.read()
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "D:\pythonProject1\venv\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.OperationalError: (1136, "Column count doesn't match value count at row 1")

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7463452
  • 这篇博客也不错, 你可以看下python tkinter 学生信息管理系统
  • 除此之外, 这篇博客: 利用python操纵数据库--数据写入与tkinter实现界面查询中的 2.3 读取数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 接下来,我们可以从终端进入mysql,执行sql查询操作即可

    SELECT * FROM student_base_info;
    

    结果和上面的相似,也可以试试聚合查询

    select dept_id, count(*)  from student_base_info group by dept_id;
    

    得到的数据如下
    在这里插入图片描述
    当然我们也可以用不惯python脚本进行查询并且格式化输出,即使用下面的这个脚本

    if __name__ == '__main__':
        print_hi('PyCharm')
    
        cur,db = conect_mysql('localhost','root','password',3306,'student')
    
    
        sql = 'select * from student_base_info'
        print("====== 开始执行 ========")
        cur.execute(sql)
        results = cur.fetchall();
        # print(results)
        print('name\t age\tfirst_name\tlast_name\tdept_id')
        for result in results:
            id = result[0]
            first_name = result[1]
            last_name = result[2]
            age = result[3]
            dept_it = result[4]
            print('\t{0}\t{1}\t {2}\t{3}\t{4}'.format(id,first_name,last_name,age,dept_it))
        # db.commit()
        print("====== 完成执行 ========")
    

    最终输出结果为:
    在这里插入图片描述

  • 您还可以看一下 Fiona老师的超详细零基础Python编程实战课程中的 tkinter的3种布局小节, 巩固相关知识点