python2.7 - python 如何执行mysql单个参数过滤
高洛峰
高洛峰 2017-04-18 10:22:21
0
2
827

使用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 单个参数

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(2)
小葫芦

질문자가 데이터베이스 연결에 어떤 라이브러리를 사용하는지 언급하지 않았기 때문에 mysqldb을 사용하고 있는 것으로 추정됩니다.
mysqldb의 소스 코드를 살펴보세요:

으아악

보시다시피 args 매개변수는 선택적 시퀀스 또는 매핑입니다. 즉, args 매개변수의 예상 유형은 list 또는 tuple입니다.
그런 다음 제공한 입력 매개변수를 다시 살펴보세요.

으아악

해결책은 간단합니다.

으아악

여기에는 작은 세부 사항이 포함됩니다.
단 하나의 요소로 튜플을 생성할 때는 쉼표를 추가해야 합니다. 그렇지 않으면 인터프리터가 이를 문자열로 생성합니다.

阿神

으아악

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿