PyMYSQL 查询未返回预期结果

1 投票
1 回答
1121 浏览
提问于 2025-04-18 10:08

我还是个新手,刚学MySQL,也对Python有一点基础。提前谢谢大家的帮助。我找过一些相关的帖子,但没找到合适的解决办法。

问题是:

我有一个表格,想要输入一个名字和姓氏,如果这些名字和姓氏在记录中有匹配的,就返回那一行的数据,还有表格的名字。听起来很简单,可能对高手来说确实是这样,但我遇到了一个错误:TypeError: not all arguments converted during string formatting。

我的代码:

import pymysql

user_input_fname = input("Please enter client first name and press Enter button: ")
user_input_lname = input("Please enter client last name and press Enter button: ")


db = pymysql.connect(host='127.0.0.1', port=44420, user='*****', passwd='*************', db='************')
cursor = db.cursor()
cursor.execute("""SELECT Named_Insured_First_Name, Named_Insured_Last_Name FROM condo_rented_to_others WHERE Named_Insured_First_Name='user_input_fname' AND Named_Insured_Last_Name='user_input_lname' """, (user_input_fname, user_input_lname,))

# calls fetchone until None is returned (no more rows)
for row in iter(cursor.fetchone, None):
    print ('condo_rented_to_others')
    print(row)

1 个回答

1

你现在查询的是字面上的值 'user_input_fname' 和 'user_input_fname'。你需要用参数替换的方式,把变量的值插进去,而不是直接用这些字面值。

cursor.execute("""SELECT Named_Insured_First_Name, Named_Insured_Last_Name FROM condo_rented_to_others WHERE Named_Insured_First_Name=%s AND Named_Insured_Last_Name=%s """, (user_input_fname, user_input_lname,))

撰写回答