Python操作MySQL遇ProgrammingError,类内查询传参失败求助
Python MySQL 性别查询参数处理错误排查
问题情况
在Python开发MySQL功能时,编写了Student类,其静态方法query内部定义了gender函数用于按性别查询数据。目前其他数据库操作正常,但该性别查询在外部传参时失败,触发错误:mysql.connector.errors.ProgrammingError: Could not process parameters。已尝试将参数定义为values = (gender,),但问题仍未解决。
相关代码片段
class Student(): . . . @staticmethod def query(islem): . . . def gender(gender): sql = "SELECT * ISIM,SOYAD from ogrencilisteleri where GENDER = %s " values = (gender) Student.mycursor.execute(sql,gender)
问题根源及修复方案
1. SQL语句语法错误
原SQL中的SELECT * ISIM,SOYAD属于非法语法,*代表查询所有字段,不能与具体字段名直接并列。根据需求修改为以下二者之一:
-- 仅查询指定字段 SELECT ISIM, SOYAD FROM ogrencilisteleri WHERE GENDER = %s -- 查询所有字段 SELECT * FROM ogrencilisteleri WHERE GENDER = %s
2. 参数传递错误
values = (gender)并未创建元组,只是对变量进行了括号包裹,必须添加逗号才能生成单元素元组:values = (gender,)execute方法的第二个参数应传入定义好的values元组,而非直接传入gender变量
3. 代码缩进错误
Python对缩进敏感,内部函数gender的代码块没有缩进,会导致语法错误,需将函数内的代码正确缩进。
修复后的代码示例
class Student(): # 其他类成员代码... @staticmethod def query(islem): # 其他逻辑代码... def gender(gender): # 修正后的SQL语句 sql = "SELECT ISIM, SOYAD FROM ogrencilisteleri WHERE GENDER = %s" # 正确创建单元素元组 values = (gender,) # 传入正确的参数元组 Student.mycursor.execute(sql, values)
内容的提问来源于stack exchange,提问作者xYusufX
相关产品推荐
相关产品推荐

