Python记忆测验游戏中pandas.read_sql报str not tuple错误求助
问题解决:pandas.read_sql 执行SQL时的参数传递错误
错误原因
你把SQL语句和参数打包成元组传给了pandas.read_sql(),但该函数要求第一个参数是纯SQL字符串,查询参数需要通过专门的params参数传递。这种错误写法导致pandas把整个元组当作SQL语句执行,触发了类型错误。
修正后的代码
import sqlite3 import pandas as pd connection = sqlite3.connect('Memory.db') # 单独定义纯字符串格式的SQL语句 sql = "SELECT Date, Score FROM scoring WHERE UserID =?" # 通过params参数传入查询参数 data = pd.read_sql(sql, connection, params=(Username_Login.value,)) connection.close() # 操作完成后关闭数据库连接,避免资源泄漏
额外优化建议
可以用with语句自动管理数据库连接,无需手动关闭:
import sqlite3 import pandas as pd with sqlite3.connect('Memory.db') as connection: sql = "SELECT Date, Score FROM scoring WHERE UserID =?" data = pd.read_sql(sql, connection, params=(Username_Login.value,))
内容的提问来源于stack exchange,提问作者Aaisha Garda
相关产品推荐
相关产品推荐

