INSERT INTO en Python en MySQL

En Python, puedes realizar una inserción en una base de datos MySQL utilizando el módulo mysql.connector. Aquí podrás aprender cómo realizar una sentencia INSERT INTO para agregar datos a una tabla en MySQL.


INSERT INTO en Python

Ejemplo para insertar un registro en la tabla de “clientes”:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu_usuario",
  passwd="tu_contraseña",
  database="tu_bbdd"
)

mycursor = mydb.cursor()

sql = "INSERT INTO clientes (nombre, direccion) VALUES (%s, %s)"
val = ("Carlos", "C/Mayor 1")
mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "registro insertado")

El ejemplo se realiza una inserción en la tabla «clientes» de una base de datos MySQL utilizando el módulo mysql.connector en Python. La sentencia INSERT INTO agrega un nuevo registro con los valores proporcionados en las columnas «nombre» y «direccion». Después de la inserción, se realiza un commit para guardar los cambios en la base de datos, y finalmente se imprime el número de registros afectados por la inserción.

Recuerda que debes reemplazar «tu_usuario», «tu_contraseña», «tu_bbdd» y los valores de val con los datos correspondientes de tu base de datos y los nuevos registros que deseas insertar.

Este es un ejemplo básico de cómo realizar una inserción en MySQL desde Python, y es útil para agregar nuevos datos a una tabla en una base de datos MySQL.

Importante: Es necesario realizar los cambios, de lo contrario no se realizarán cambios en la tabla.


Insertar filas múltiples con INSERT INTO en Python

Para insertar varias filas en una tabla, use el método executemany().

El segundo parámetro del método executemany() es una lista de tuplas, que contiene los datos que desea insertar:

Ejemplo de insertar filas múltiples con INSERT INTO en Python

Llene la tabla de «clientes» con datos:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu_usuario",
  passwd="tu_contraseña",
  database="tu_bbdd"
)

mycursor = mydb.cursor()

sql = "INSERT INTO clientes (nombre, direccion) VALUES (%s, %s)"
val = [
  ('Ana', 'C/ Mayor 1'),
  ('Carlos', 'C/Arriba 10'),
  ('Vanesa', 'C/Samaranch 156'),
  ('Antonio, 'Plaza de Mexico 16'),
  ('Enrique', 'Calle de la Rosa 36'),
  ('Javi', 'C/ Marzo 23'),
  ('Agus', 'C/ La Montaña')
]

mycursor.executemany(sql, val)

mydb.commit()

print(mycursor.rowcount, "Se ha insertado")


En el ejemplo se explica cómo insertar múltiples filas en una tabla de MySQL utilizando el método executemany() en Python. En este caso, estamos insertando varios registros en la tabla «clientes» con las columnas «nombre» y «direccion». A continuación, se describen los pasos que realiza el código:

  • Importar el módulo mysql.connector.
  • Establecer la conexión a la base de datos MySQL utilizando los detalles de host, usuario, contraseña y nombre de la base de datos proporcionados.
  • Crear un objeto cursor para interactuar con la base de datos.
  • Definir la sentencia SQL para la inserción de datos en la tabla «clientes». La sentencia SQL tiene dos parámetros %s que serán reemplazados con los valores de «nombre» y «direccion».
  • Crear una lista val que contiene las tuplas de datos a insertar en la tabla. Cada tupla contiene los valores para «nombre» y «direccion» correspondientes a una fila a ser insertada.
  • Utilizar el método executemany() del cursor para ejecutar la sentencia SQL con la lista de datos. executemany() es utilizado cuando se desea insertar múltiples filas en una sola operación.
  • Hacer un commit() para guardar los cambios en la base de datos.
  • Imprimir la cantidad de filas que se han insertado, que se obtiene a través del atributo rowcount del objeto cursor.

Es importante tener en cuenta que la cantidad de elementos en la lista val debe coincidir con la cantidad de parámetros de la sentencia SQL para una inserción exitosa.

Con este ejemplo, se insertan múltiples filas en la tabla «clientes» de la base de datos, cada una con su respectivo nombre y dirección.


Obtener ID insertada en Python MySQL

Puede obtener el ID de la fila que acaba de insertar preguntando el objeto del cursor.

Importante: Si inserta más de una fila, se devuelve el ID de la última fila insertada.

Ejemplo para obtener ID insertada en Python MySQL

Inserte una fila y devuelva el ID:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="tu_usuario",
  passwd="tu_contraseña",
  database="tu_bbdd"
)

mycursor = mydb.cursor()

sql = "INSERT INTO clientes (nombre, direccion) VALUES (%s, %s)"
val = ("Javier", "C/Marzo 23")
mycursor.execute(sql, val)

mydb.commit()

print("1 registro insertado, ID", mycursor.lastrowid)

Este código utiliza el atributo lastrowid del objeto cursor para obtener el ID de la última fila insertada en la tabla «clientes». Aquí está el código explicado paso a paso:

  • Importar el módulo mysql.connector.
  • Establecer la conexión a la base de datos MySQL utilizando los detalles de host, usuario, contraseña y nombre de la base de datos proporcionados.
  • Crear un objeto cursor para interactuar con la base de datos.
  • Definir la sentencia SQL para la inserción de datos en la tabla «clientes». La sentencia SQL tiene dos parámetros %s que serán reemplazados con los valores de «nombre» y «direccion».
  • Crear una tupla val que contiene los valores para «nombre» y «direccion» correspondientes a una fila a ser insertada.
  • Utilizar el método execute() del cursor para ejecutar la sentencia SQL con los valores de la tupla val. Esto insertará una nueva fila en la tabla «clientes».
  • Hacer un commit() para guardar los cambios en la base de datos.
  • Utilizar el atributo lastrowid del objeto cursor para obtener el ID de la última fila insertada. Este atributo devuelve el ID autoincremental generado por MySQL para la fila recién insertada.
  • Imprimir el mensaje indicando que se insertó un registro junto con el ID de la fila insertada.

El resultado será un mensaje como este:

1 registro insertado, ID 1

Donde «1» es el ID de la última fila insertada en la tabla «clientes». Cabe mencionar que el atributo lastrowid solo funciona cuando la tabla tiene una columna de ID autoincremental. Si la tabla no tiene una columna autoincremental, el valor de lastrowid será None.