如何解决如何使用存储在变量中的值从python mysql数据库获取特定行?
我的代码在这里:
def draw_money():
dr_list = [acc_num,acc_num_entry,with_btn,with_money,with_money_entry]
for i in dr_list:
i.destroy()
new_acc = acc_num_var.get()
money_amount = money.get()
con = pymysql.connect(host="localhost",port=3306,user="root",password="",db="bankac")
cur = con.cursor()
query = "SELECT * FROM ac WHERE name = new_acc"
cur.execute(query)`
但是当我执行此功能时,出现以下错误---
*Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py",line 1705,in __call__ return self.func(*args)
File "C:\Users\AMISHA SINGH\Documents\app\bank.py",line 33,in draw_money
cur.execute(query)
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\cursors.py",line 170,in execute
result = self._query(query)
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\cursors.py",line 328,in _query
conn.query(q)
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py",line 517,in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py",line 732,in _read_query_result
result.read()
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py",line 1075,in read
first_packet = self.connection._read_packet()
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\connections.py",line 684,in _read_packet
packet.check_error()
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\protocol.py",line 220,in check_error
err.raise_mysql_exception(self._data)
File "C:\Users\AMISHA SINGH\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymysql\err.py",line 109,in raise_mysql_exception
raise errorclass(errno,errval)
pymysql.err.InternalError: (1054,"Unknown column 'new_acc' in 'where clause'")*
请帮助我。我已经尝试了很多方法,但是我无法弄清楚。我正在使用python模块tkinter和pymysql进行银行模拟。我想通过比较存储在python变量中的值来从数据库中获取特定行。
解决方法
您需要使用参数替换来传递变量,如下所示:
query = "SELECT * FROM ac WHERE name = %s"
cur.execute(query,(new_acc,))
请注意,传递给execute的值参数必须是in元组或列表,即使其中只有一个。 (new_acc,)
是单个元素元组。
也可以使用略有不同的替换在字典中传递值:
query = "SELECT * FROM ac WHERE name = %(var_name)s"
cur.execute(query,{'var_name': new_acc})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。