我创建了2个python脚本
在第一个脚本中,我使用tkinter来获取用户的条目,然后我创建了一个按钮来提交条目,这个按钮调用了一个函数,这个函数调用了第二个脚本作为一个模块。
我为查询创建了第二个脚本,我使用了Mysql-Python-Connector,在这个脚本中,我创建了一个带参数的函数,参数是第一个脚本中的文本变量。
问题:每次我运行这个脚本时,都会弹出这个错误。
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib64/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
File "mainsoft.py", line 14, in insname
querymod.dbins(nameget)
File "/home/akeno/Documents/giveaway/redesign/main/stack/querymod.py", line 13, in dbins
concursor.execute(querydb,aux)
File "/home/akeno/.local/lib/python3.8/site-packages/mysql/connector/cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "/home/akeno/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 598, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "/home/akeno/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 486, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%s)' at line 1
这里是第一个脚本。
mainsoft.py
from tkinter import *
from tkinter import ttk
import tkinter
root = tkinter.Toplevel()
def insname():
nameget = varname.get()
import querymod
querymod.dbins(nameget)
namelb = Label(root, text = "Name")
namelb.pack()
varname = StringVar()
nameEntry = Entry(root, textvariable = varname)
nameEntry.pack()
submitButton = Button(root, command = insname)
submitButton.pack()
root.mainloop()
这是第二个脚本,查询脚本。
querymod.py
import mysql.connector
def dbins(param1):
con = mysql.connector.connect(user = 'user1', password = 'yourpassword', host = '127.0.0.1', database = 'Student')
concursor = con.cursor()
aux = (param1)
querydb = """insert into Student(Name) values(%s)"""
concursor.execute(querydb,aux)
con.commit()
con.close()
有什么办法可以解决这个问题吗? 谢谢阅读。
试着用.com代替.com。
aux = (param1)
querydb = """insert into Student(Name) values(%s)"""
concursor.execute(querydb,aux)
这 ..:
aux = (param1)
querydb = "insert into Student(Name) values('{}')".format(aux)
concursor.execute(querydb)