>백엔드 개발 >파이썬 튜토리얼 >긴 문자열에 대해 \'잘못된 바인딩 수\'로 인해 내 SQLite INSERT 문이 실패하는 이유는 무엇입니까?

긴 문자열에 대해 \'잘못된 바인딩 수\'로 인해 내 SQLite INSERT 문이 실패하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-30 10:23:15794검색

Why Does My SQLite INSERT Statement Fail with

잘못된 바인딩 개수

아래 코드를 사용하여 SQLite 데이터베이스에 문자열을 삽입하려고 하면 잘못된 숫자를 나타내는 오류가 발생합니다. of 바인딩:

def insert(array):
    connection=sqlite3.connect('images.db')
    cursor=connection.cursor()
    cnt=0
    while cnt != len(array):
            img = array[cnt]
            cursor.execute('INSERT INTO images VALUES(?)', (img))
            cnt+= 1
    connection.commit()
    connection.close()

삽입할 문자열이 74자일 때 오류 메시지가 나타납니다. long.

문제의 근본

코드는 일련의 항목을 바인드 값으로 실행() 메소드에 전달하려고 시도합니다. 그러나 바인드 값 매개변수에는 튜플이 필요하며 코드는 튜플을 생성하는 데 필요한 쉼표 제공을 무시합니다.

cursor.execute('INSERT INTO images VALUES(?)', (img)) # Missing comma

수정

문제가 발생하면 바인드 값 매개변수 끝에 쉼표를 추가하여 tuple:

cursor.execute('INSERT INTO images VALUES(?)', (img,))

또는 유효한 시퀀스로도 인식되는 목록 리터럴을 사용할 수 있습니다.

cursor.execute('INSERT INTO images VALUES(?)', [img])

두 가지 수정 사항을 모두 사용하면 코드가 이미지 경로를 올바르게 삽입합니다. 잘못된 바인딩 수에 대한 오류 메시지를 표시하지 않고 데이터베이스에 추가됩니다.

위 내용은 긴 문자열에 대해 \'잘못된 바인딩 수\'로 인해 내 SQLite INSERT 문이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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