我试着删除我的数据库DB的Python内的记录,它给了我错误,
mysql.connector.errors.ProgrammingError: 1370 (42000): execute command denied to user 'user'@'%' for routine 'e7.get'
e7.get是tkinter中输入框的输入,我在mysql workbench中尝试了相同的命令,
DELETE FROM PATIENTS WHERE Patient_name=random_name
它在mysql工作台内部工作,唯一的问题是当我使用变量时,和一些特权错误?我使用的是一个在线免费托管网站db4free.net。我试过授予特权,它给出了另一个错误,即#1044 - Access denied for user 'user'@'%' to database 'DB'
服务器确实支持远程访问。Thanks in advance:)编辑:我试着把e7.get()放在引号里,它不会给予错误,但它什么也没做,记录仍然存在。
产品编号:
def delete():
con = mysql.connect(host='localhost', user='user', password='*****', database='DB')
c = con.cursor()
c.execute("DELETE FROM PATIENTS WHERE gender = 'e7.get()' ")
c.execute('commit')
con.close()
e7.delete(0, END)
不显示错误,但不删除记录。
2条答案
按热度按时间dpiehjr41#
即使是python也容易受到SQL注入的影响,因此使用参数化查询并避免python/sql转义的复杂性:
参见tutorial
dgiusagp2#
这听起来像是在尝试将e7.get()的返回值插入到sql命令中。
在Python中,你可以用途:
或者您可以用途:
这两种方法都会将
e7.get()
的返回值插入到字符串中