code

IndexError: 목록 인덱스가 범위를 벗어남, 데이터베이스에서 항목 1개를 가져오는 동안 오류가 발생했습니다.

starcafe 2023. 7. 17. 21:16
반응형

IndexError: 목록 인덱스가 범위를 벗어남, 데이터베이스에서 항목 1개를 가져오는 동안 오류가 발생했습니다.

파이썬에서 재고 관리 시스템을 개발하고 있는데 이미 존재하는지 확인하기 위해 은행에서 데이터를 가져와야 할 때 문제가 있었습니다.

이건 내 코드야:

import mariadb

banco = mariadb.connect(
    host="127.0.0.1",
    user="root",
    passwd="",
    database="controle_estoque"
)

# Ask the user to enter data
textProduto = input("Digite o nome do produto que deseja adicionar ao banco: ")
textQuantidade: int = input("Digite a quantidade: ")
# Ask the user to enter data

# Search the item quantity in the stock database through the product
cursor = banco.cursor()
cursor.execute(f"SELECT produto FROM estoque WHERE produto = '{textProduto}' ")
resultado = cursor.fetchall()[0][0]
print(resultado)
# Search the item quantity in the stock database through the product

# Check if the fields have been filled
if ((textProduto == "") and (textQuantidade == "")):
    print("Campos vazios")
# Check if the fields have been filled

# If the product is found, it adds the quantity entered with the quantity in stock
elif resultado == textProduto:
    cursor = banco.cursor()
    cursor.execute(f"SELECT quantidade FROM estoque WHERE produto = '{resultado}' ")
    quantidade_bd = cursor.fetchall()[0][0]
    quantidade_final = int(quantidade_bd) + int(textQuantidade)
    print(quantidade_final)
# If the product is found, it adds the quantity entered with the quantity in stock

# If the product is not found, it inserts the new product into the stock
else:
    print("Cadastro realizado")
# If the product is not found, it inserts the new product into the stock

출력:

Digite o nome do produto que deseja adicionar ao banco: 
Digite a quantidade: 100
Traceback (most recent call last):
  File "C:/Users/INSS/PycharmProjects/Projeto03/testes/bd.py", line 18, in <module>
    resultado = cursor.fetchall()[0][0]
IndexError: list index out of range

Process finished with exit code 1

이 문제는 제품 텍스트를 비워둘 때 발생합니다.텍스트에 무언가를 삽입하면 모든 것이 올바르게 작동합니다.

좀 더 복잡한 코드의 이 부분을 가져와서 더 간단한 방법으로 했는데, 오류가 남아있어요, 문서를 검색했는데 수정하는 방법을 몰랐어요.

데이터베이스에서 결과가 반환되지 않거나 사용자가 textProduct에 잘못된 입력을 입력했기 때문에 문제가 발생했습니까?

데이터베이스에서 반환된 항목이 없기 때문에 문제가 발생하면 줄을 감아서 오류를 발생시킬 수 있습니다.Try:차단, an과 함께Except:블록은 결과를 찾을 수 없을 때 코드가 수행할 작업을 지시합니다.

입력 상자에서 ""를 입력으로 허용하지 않으려면 이 질문에 대한 답변에 설명된 내용에 따라 작업을 수행하는 것이 좋습니다.유효한 응답이 있을 때까지 사용자에게 입력을 요청합니다.

언급URL : https://stackoverflow.com/questions/74320259/indexerror-list-index-out-of-range-error-pulling-1-item-from-database

반응형