这是一段代码。当我想从SQLite中删除可用数据时,我会得到一个错误的响应。假设初始数据为0,我减去100,然后,当我尝试减去更多时,它减去,然后写一个错误
cursor.execute("SELECT usd FROM balans")
FOR_USD = int(str(cursor.fetchone()).replace(',', '').replace('(', '').replace(')', ''))
def checkcmbo():
FOR_USD = int(FOR_USD) - int(num.get())
FOR_USD = f"""Update balans set usd = {FOR_USD}"""
cursor.execute(FOR_USD)
connect.commit()
运行之后,我在控制台中得到这个错误
File "C:\pyt\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/Users/d6692/PycharmProjects/ahmed/ahmed.py", line 91, in checkcmbo
FOR_USD = int(FOR_USD) - int(num.get())
ValueError: invalid literal for int() with base 10: 'Update balans set usd = -850'
当前,在执行
chekcmbo
一次之后,FOR_USD
的值是您的SQL语句Update balans set usd = -850
。因此,当您再次运行它时,您尝试将SQL语句强制转换为整数,这会导致错误。只需替换SQL字符串的变量名即可解决此问题,例如:这样
FOR_USD
整数就不会被SQL语句覆盖。编辑
感谢Cool Cloud指出原始答案很容易被注入
相关问题 更多 >
编程相关推荐