>백엔드 개발 >파이썬 튜토리얼 >내 매개 변수화된 SQL 쿼리에서 '문자열 형식 지정 중에 모든 인수가 변환되지 않았습니다.' 오류가 발생하는 이유는 무엇입니까?

내 매개 변수화된 SQL 쿼리에서 '문자열 형식 지정 중에 모든 인수가 변환되지 않았습니다.' 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-03 14:12:18206검색

Why Does My Parameterized SQL Query Throw a

매개변수가 있는 SQL 쿼리 오류 문제 해결: "문자열 형식 지정 중에 일부 인수가 변환되지 않음" 해결

매개변수가 있는 SQL 쿼리를 실행하려고 할 때 개발자는 다음과 같은 작업을 수행할 수 있습니다. 오류: "TypeError: 문자열 형식 지정 중에 일부 인수가 변환되지 않았습니다." 이 문제는 일반적으로 매개변수가 부족하거나 형식이 잘못된 쿼리에 문자열 형식을 사용할 때 발생합니다.

이 오류를 해결하려면 형식이 지정된 문자열의 각 자리 표시자가 쿼리의 해당 인수와 일치하는지 확인하는 것이 중요합니다. . 주어진 코드 조각에서:

cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)

쿼리의 자리 표시자 '%s'는 검색 값으로 대체될 매개변수를 나타냅니다. 그러나 실행 메소드에는 매개변수가 포함된 목록이나 튜플이 필요합니다. 이를 수정하려면 다음과 같이 수정하면 됩니다.

cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])

검색을 목록으로 래핑하면 개별 매개변수로 압축을 풀 수 있는 반복 가능 항목이 됩니다. MySQLdb에서 매개변수화된 쿼리를 실행하기 위한 올바른 구문을 사용하려면 매개변수가 목록으로 전달되어야 합니다.

이 간단한 조정을 통해 문자열 형식화 중에 모든 인수가 올바르게 변환되고 앞서 언급한 오류가 제거됩니다. 또는 매개변수 전달을 위해 목록 대신 튜플(불변 목록)을 사용할 수 있습니다.

위 내용은 내 매개 변수화된 SQL 쿼리에서 '문자열 형식 지정 중에 모든 인수가 변환되지 않았습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.