ComenzarEmpieza gratis

Insertar una sola fila

Hay varias formas de hacer un insert con SQLAlchemy; sin embargo, vamos a centrarnos en la que sigue el mismo patrón que la sentencia select.

Usa una sentencia insert donde especificas la tabla como argumento y proporcionas los datos que quieres insertar en los valores mediante el método .values() como argumentos con nombre. Por ejemplo, si my_table contiene las columnas my_col_1 y my_col_2, entonces insert(my_table).values(my_col_1=5, my_col_2="Example") creará una fila en my_table con el valor de my_col_1 igual a 5 y el valor de my_col_2 igual a "Example".

Fíjate en la diferencia de sintaxis: al añadir una cláusula where a una sentencia existente, incluimos el nombre de la tabla además del nombre de la columna, por ejemplo new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Esto es necesario porque la sentencia existente puede involucrar varias tablas.

En cambio, solo puedes hacer insert en una única tabla, así que no necesitas incluir el nombre de la tabla cuando uses values() para insertar, p. ej., stmt = insert(my_table).values(my_col = 10).

Aquí, el nombre de la tabla es data. Puedes ejecutar repr(data) en la consola para examinar la estructura de la tabla.

Este ejercicio forma parte del curso

Introducción a las bases de datos en Python

Ver curso

Instrucciones del ejercicio

  • Importa insert y select del módulo sqlalchemy.
  • Crea una sentencia de inserción insert_stmt para la tabla data que establezca name a 'Anna', count a 1, amount a 1000.00 y valid a True.
  • Ejecuta insert_stmt con connection y guarda los results.
  • Imprime el atributo .rowcount de results para ver cuántos registros se insertaron.
  • Crea una sentencia select para consultar data por el registro cuyo name sea 'Anna'.
  • Ejecuta la solución para imprimir los resultados de la ejecución de la sentencia select.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Import insert and select from sqlalchemy
from sqlalchemy import ____, ____

# Build an insert statement to insert a record into the data table: insert_stmt
insert_stmt = insert(____).values(name=____, ____, ____, ____)

# Execute the insert statement via the connection: results
results = connection.execute(____)

# Print result rowcount
print(____)

# Build a select statement to validate the insert: select_stmt
select_stmt = select([data]).where(____ == ____)

# Print the result of executing the query.
print(connection.execute(select_stmt).first())
Editar y ejecutar código