>  Q&A  >  본문

python2.7 - python 如何执行mysql单个参数过滤

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

高洛峰高洛峰2764일 전768

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 10:24:21

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

    으아악

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

    으아악

    해결책은 간단합니다.

    으아악

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

    회신하다
    0
  • 阿神

    阿神2017-04-18 10:24:21

    으아악

    회신하다
    0
  • 취소회신하다