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
Instrucciones del ejercicio
- Importa
insertyselectdel módulosqlalchemy. - Crea una sentencia de inserción
insert_stmtpara la tabladataque establezcanamea'Anna',counta1,amounta1000.00yvalidaTrue. - Ejecuta
insert_stmtconconnectiony guarda losresults. - Imprime el atributo
.rowcountderesultspara ver cuántos registros se insertaron. - Crea una sentencia select para consultar
datapor el registro cuyonamesea'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())