我尝试在python中为我的数据库nihaalnztrying删除一条记录,但它给了我一个错误
mysql.connector.errors.ProgrammingError: 1370 (42000): execute command denied to user 'nihaalnz'@'%' for routine 'e7.get'
e7.get是来自tkinter中输入框的输入,我在mysql workbench中尝试了相同的命令
DELETE FROM PATIENTS WHERE Patient_name=nihaal
它在mysql workbench内部工作,唯一的问题是当我使用变量时,出现了一些privilage错误?我使用在线免费托管网站db4free.net。我已尝试授予特权,但它给出另一个错误,#1044 - Access denied for user 'nihaalnz'@'%' to database 'nihaalnztrying'
服务器不支持远程访问。提前感谢:)
编辑:我尝试将e7.get()放在引号中,但它没有给出错误,而且记录仍然存在
代码:
def delete():
con = mysql.connect(host='db4free.net', user='nihaalnz', password='*****', database='nihaalnztrying')
c = con.cursor()
c.execute("DELETE FROM PATIENTS WHERE gender = 'e7.get()' ")
c.execute('commit')
con.close()
e7.delete(0, END)
没有给出错误,但不删除记录
甚至python也容易受到SQL注入的影响,因此请使用参数化查询并避免python/SQL转义的复杂性:
见tutorial
听起来好像您正试图将e7.get()的返回值插入到sql命令中
在python中,您可以使用:
或者您可以使用:
其中任何一个都会将返回值
e7.get()
插入到字符串中相关问题 更多 >
编程相关推荐