"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cuando se utiliza SQLite3 en Python, ¿por qué \"Número incorrecto de enlaces proporcionados\" al utilizar \"?\" ¿Sustitución de parámetros?

Cuando se utiliza SQLite3 en Python, ¿por qué \"Número incorrecto de enlaces proporcionados\" al utilizar \"?\" ¿Sustitución de parámetros?

Publicado el 2024-11-07
Navegar:802

When Using SQLite3 in Python, Why \

Enigma de sustitución de parámetros de SQLite

En un intento de protegerse contra las inyecciones de SQL, un desarrollador encontró un error al utilizar SQLite3 con Python 2.5. Al emplear el "?" recomendado sustitución de parámetros para evitar inyecciones, se enfrentaron al siguiente dilema:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.

Este problema parecía surgir de la creación inicial de la base de datos, que contenía ocho enlaces. Sin embargo, usar la sustitución menos segura "%s" para cada nombre de elemento resolvió el problema.

for item in self.inventory_names:
    self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item)
    self.cursor.close()

La solución a esta perplejidad radica en comprender que el método Cursor.execute() requiere una secuencia como segundo parámetro. En este caso, el desarrollador proporcionaba una cadena que tenía ocho caracteres. Para rectificar esto, se debe implementar la siguiente modificación de código:

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

Al cumplir con este parámetro especificación, el problema se puede abordar de manera efectiva, permitiendo una recuperación de datos segura y eficiente desde SQLite3.

Declaración de liberación Este artículo se reimprime en: 1729322955 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3