首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理格式失败-参数;Python 'tuple‘不能转换为MySQL类型

处理格式失败-参数;Python 'tuple‘不能转换为MySQL类型
EN

Stack Overflow用户
提问于 2020-05-18 08:08:07
回答 1查看 1.4K关注 0票数 0

我在这里做了这段代码,我在这里得到错误,因为在mysql中不能使用元组的代码?为什么会这样呢?代码中有错误吗?

代码:

代码语言:javascript
运行
复制
            def edit():
                manage = Toplevel(update)
                manage.title('Manage')
                #Clearing entry box
                e_i_d.delete(0,END) 

                def edit():
                    #Establishing connection
                    con = mysql.connect(host='^^^.^^', user='nihaalnz',
                                            password='^^^^', database='nihaalnztrying')
                    # Making SQL command
                    sql_command = "UPDATE patient_info set `full_name`=%s ,`ph_no`=%s,`emirate_id`=%s,`email_addr`=%s,`gender`=%s,`DOB`=%s,`nationality`=%s,`blood_grp`=%s,`COVID_test`=%s,`emergency_no`=%s ;"
                    values = e10.get(), e20.get(), e30.get(), e40.get(), g.get(), e_dt.get(), e50.get(),b.get(),co.get() ,e60.get() 
                    c = con.cursor()
                    #Executing and saving SQL command
                    c.execute(sql_command, (values,))
                    c.execute('commit')
                    con.close()    

                #Defining Labels
                l_head = Label(manage, text='Edit',font=Font(size='20'))
                l1 = ttk.Label(manage, text='Name', font=font_text)
                l2 = ttk.Label(manage, text='Phone Number', font=font_text)
                l3 = ttk.Label(manage, text='Emirates ID', font=font_text)
                l4 = ttk.Label(manage, text='Email Address', font=font_text)
                l5 = ttk.Label(manage, text='Nationality', font=font_text)
                l6 = ttk.Label(manage, text='Emergency Contact Number', font=font_text)
                l7 = ttk.Label(manage, text='Gender', font=font_text)
                l8 = ttk.Label(manage, text='Blood Group', font=font_text)
                l9 = ttk.Label(manage, text='Test for COVID-19', font=font_text)
                l10 = ttk.Label(manage, text='DOB', font=font_text)
                l_wa = Label(manage, text='NOTE: Date must be in yyyy-mm-dd format always', font=font_text,fg='red')

                #Defining Entry boxes and button
                e10 = ttk.Entry(manage)
                e20 = ttk.Entry(manage)
                e30 = ttk.Entry(manage)
                e40 = ttk.Entry(manage)
                e50 = ttk.Entry(manage)
                e60 = ttk.Entry(manage)
                e_dt = ttk.Entry(manage)
                b_cls = ttk.Button(manage, text='Close',command=manage.destroy)
                b_db = ttk.Button(manage, text='Update Data',command=edit)

                main = records[0]

                #Defining Dropdowns
                g = StringVar()
                g.set(main[5])
                opt_g = OptionMenu(manage, g, *gen)

                b = StringVar()
                b.set(main[8])
                opt_blo = OptionMenu(manage, b, *bl_gr)

                co = StringVar()
                co.set(main[9])
                opt_cov = OptionMenu(manage, co, *cov)

                #Placing entry boxes on screen
                e10.grid(row=1, column=1, pady=5, ipady=5, padx=5)
                e20.grid(row=1, column=3, pady=5, ipady=5, padx=5)
                e30.grid(row=2, column=1, pady=5, ipady=5, padx=5)
                e40.grid(row=2, column=3, pady=5, ipady=5, padx=5)
                e50.grid(row=3, column=1, pady=6, ipady=5, padx=5)
                e60.grid(row=3, column=3, pady=5, ipady=5, padx=5)

                #Inserting results on to boxes
                for record in records:
                    e10.insert(0,record[1])
                    e20.insert(0,record[2])
                    e30.insert(0,record[3])
                    e40.insert(0,record[4])
                    e50.insert(0,record[7])
                    e60.insert(0,record[10])
                    e_dt.insert(0,record[6])
                # Closing the connection
                con.close()

                #Placing labels and dropdowns on screen
                l_head.grid(row=0, columnspan=5, pady=10, padx=5)
                l1.grid(row=1, column=0, pady=5, ipady=5, padx=5)
                l2.grid(row=1, column=2, pady=5, ipady=5, padx=5)
                l3.grid(row=2, column=0, pady=5, ipady=5, padx=5)
                l4.grid(row=2, column=2, pady=5, ipady=5, padx=5)
                l5.grid(row=3, column=0, pady=5, ipady=5, padx=5)
                l6.grid(row=3, column=2, pady=5, ipady=5, padx=5)
                l7.grid(row=4, column=0, pady=5, ipady=5, padx=5)
                l8.grid(row=4, column=2, pady=5, ipady=5, padx=5)
                l9.grid(row=5, column=0, pady=5, ipady=5, padx=5)
                l10.grid(row=5, column=2, pady=5, ipady=5, padx=5)

                opt_g.grid(row=4, column=1, pady=5, ipadx=10, padx=5)
                opt_blo.grid(row=4, column=3, pady=5, ipadx=10, padx=5)
                opt_cov.grid(row=5, column=1, pady=5, ipadx=10, padx=5)
                e_dt.grid(row=5, column=3, pady=5, ipady=5, padx=5)
                b_db.grid(row=7, columnspan=5, pady=(5,0), ipadx=10, sticky=E+W)
                b_cls.grid(row=8, columnspan=5, pady=(5,0), ipadx=10, sticky=E+W)
                l_wa.grid(row=6, columnspan=5, pady=5, ipady=5, padx=5, sticky=E+W)

错误:

代码语言:javascript
运行
复制
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\conversion.py", line 183, in to_mysql
    return getattr(self, "_{0}_to_mysql".format(type_name))(value)
AttributeError: 'MySQLConverter' object has no attribute '_tuple_to_mysql'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\cursor.py", line 432, in _process_params
    res = [to_mysql(i) for i in res]
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\cursor.py", line 432, in <listcomp>
    res = [to_mysql(i) for i in res]
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\conversion.py", line 186, in to_mysql
    "MySQL type".format(type_name))
TypeError: Python 'tuple' cannot be converted to a MySQL type

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "c:\pyprojects\patient data entry\Patient_Information.py", line 125, in edit
    c.execute(sql_command, (values,))
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\cursor.py", line 557, in execute
    psub = _ParamSubstitutor(self._process_params(params))
  File "C:\Users\nihaa\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\cursor.py", line 437, in _process_params
    "Failed processing format-parameters; %s" % err)
mysql.connector.errors.ProgrammingError: Failed processing format-parameters; Python 'tuple' cannot be converted to a MySQL type
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 08:24:17

我猜它在这里破了

代码语言:javascript
运行
复制
c.execute(sql_command, (values,))

这意味着要么是sql_command,要么是values造成问题。要么编写一个测试来检查values,要么为values添加一个print语句。我坚信值在某个地方有一个python元组,其中不应该有一个元组。

我希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61865125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档