Update Table en Python con MySQL

Para actualizar una tabla en MySQL utilizando Python, puedes utilizar el módulo mysql.connector usando la declaración UPDATE. A continuación, te muestro un ejemplo de cómo hacerlo:


Ejemplo Python MySQL Update Table

A continuación, te muestro un ejemplo de cómo realizar una actualización en una tabla de MySQL utilizando Python y el módulo mysql.connector.

Sobrescriba la columna de dirección de «Samaranch 32» a «C/ Mayor 42»:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu usuario",
  passwd="tu contraseña",
  database="tu bbdd"
)

mycursor = mydb.cursor()

sql = "UPDATE clientes SET direccion = 'C/ Mayor 42' WHERE address = 'Samaranch 32'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "registros afectado/s")

Aquí tienes una explicación detallada del ejemplo:

  • Establece la conexión a la base de datos MySQL utilizando mysql.connector.connect() y proporcionas los detalles de la conexión como el nombre de usuario, contraseña, host y nombre de la base de datos.
  • Crea un objeto cursor utilizando mydb.cursor(). El cursor se utiliza para ejecutar consultas y recibir los resultados.
  • Define la consulta de actualización en la variable sql. En este caso, la consulta actualiza la columna «direccion» a «C/ Mayor 42» para aquellos registros donde el valor de la columna «address» sea «Samaranch 32». Es importante asegurarse de que la columna y los valores en la consulta estén correctamente escritos y coincidan con la estructura de la tabla.
  • Ejecute la consulta de actualización utilizando mycursor.execute(sql).
  • Confirme los cambios realizados en la base de datos utilizando mydb.commit(). Es importante utilizar esta función después de realizar una operación que modifique la base de datos para guardar los cambios de manera permanente.
  • Imprime la cantidad de registros afectados por la actualización utilizando mycursor.rowcount.

Observe la declaración: mydb.commit().Es necesario realizar los cambios, de lo contrario no se realizarán cambios en la tabla.

Observe la cláusula WHERE en la sintaxis de UPDATE: La cláusula WHERE especifica qué registro o registros deben actualizarse. Si omite la cláusula WHERE, todos los registros se actualizarán.


Prevenir la inyección de SQL

Las inyecciones de SQL, son técnicas de piratería para destruir o hacer un mal uso de su base de datos. El módulo mysql.connector usa el marcador de posición % s para escapar de los valores en la declaración de eliminación:

Es un enfoque es más seguro y se considera una buena práctica al trabajar con bases de datos y consultas que involucran datos proporcionados por el usuario o cualquier fuente externa.

Recuerda que siempre es importante validar y escapar correctamente los valores proporcionados en las consultas de bases de datos para evitar vulnerabilidades de seguridad y proteger tus datos.

Ejemplo para prevenir inyecciones de SQL

Escape de los valores utilizando el método placholder % s:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu usuario",
  passwd="tu contraseña",
  database="tu bbdd"
)

mycursor = mydb.cursor()

sql = "UPDATE clientes SET direccion = %s WHERE direccion = %s"

val = ("Samaranch 32", "C/Mayor 42")

mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "registros afectado/s")

Con esta implementación, los valores proporcionados en la tupla val serán escapados adecuadamente por el módulo mysql.connector, asegurando que la consulta sea segura y que no haya riesgo de inyección de SQL.

El código realizará la actualización en la tabla «clientes» cambiando el valor de la columna «direccion» de «C/Mayor 42» a «Samaranch 32» para aquellos registros donde la columna «direccion» sea igual a «C/Mayor 42».