使用python执行mysql,报错了:
name = "AAA'A"
cursor.execute('select * from tb where name=%s',name)
cursor.execute('select * from tb where name=%s',(name))
都会报错
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting
但是以下不会报错:
name = "AAA'A"
cursor.execute('select * from tb where name=%s and %s',(name,1))
python27 如何过滤mysql 单个参数
高洛峰2017-04-18 10:24:21
질문자가 데이터베이스 연결에 어떤 라이브러리를 사용하는지 언급하지 않았기 때문에 mysqldb
을 사용하고 있는 것으로 추정됩니다. mysqldb
의 소스 코드를 살펴보세요:
보시다시피 args 매개변수는 선택적 시퀀스 또는 매핑입니다. 즉, args 매개변수의 예상 유형은 list
또는 tuple
입니다.
그런 다음 제공한 입력 매개변수를 다시 살펴보세요.
해결책은 간단합니다.
으아악여기에는 작은 세부 사항이 포함됩니다.
단 하나의 요소로 튜플을 생성할 때는 쉼표를 추가해야 합니다. 그렇지 않으면 인터프리터가 이를 문자열로 생성합니다.