"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > A substituição de parâmetros SQLite está causando erros de ligação em Python?

A substituição de parâmetros SQLite está causando erros de ligação em Python?

Publicado em 2024-11-08
Navegar:366

Is SQLite Parameter Substitution Causing Binding Errors in Python?

Problema de substituição de parâmetros SQLite

Ao utilizar SQLite3 com Python 2.5, surge um problema comum ao tentar iterar por uma lista e recuperar dados de um banco de dados. Usando o "?" sugerido parâmetro como precaução para injeções de SQL geralmente resulta em um erro em relação ao número de ligações.

Após investigação, fica aparente que o erro decorre da criação inicial da tabela do banco de dados. A instrução de criação, como:

CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT);

regista oito ligações, mesmo que apenas um parâmetro esteja sendo usado durante a consulta.

Para resolver esse problema, modifique o código para utilizar uma sequência como segundo parâmetro para o método Cursor.execute():

self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])

Esta modificação garante que uma sequência seja fornecida ao método, resolvendo a confusão sobre o número de ligações.

Referenciar a documentação dos objetos Cursor SQLite3 pode fornecer mais orientações sobre isso tópico.

Declaração de lançamento Este artigo é reproduzido em: 1729322534 Se houver alguma infração, entre em contato com [email protected] para excluí -lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3