Em uma tentativa de se proteger contra injeções de SQL, um desenvolvedor encontrou um erro ao utilizar SQLite3 com Python 2.5. Ao empregar o "?" recomendado substituição de parâmetros para evitar injeções, eles enfrentaram o seguinte dilema:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.
Esse problema parece decorrer da criação inicial do banco de dados, que continha oito ligações. No entanto, usar a substituição "%s" menos segura para cada nome de item resolveu o problema.
for item in self.inventory_names: self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item) self.cursor.close()
A solução para essa perplexidade está em entender que o método Cursor.execute() requer uma sequência como seu segundo parâmetro. Nesse caso, o desenvolvedor estava fornecendo uma string com oito caracteres. Para corrigir isso, a seguinte modificação de código deve ser implementada:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])
Em conformidade com este parâmetro especificação, o problema pode ser resolvido de forma eficaz, permitindo a recuperação segura e eficiente de dados do SQLite3.
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