Inserindo uma única linha
Há várias maneiras de fazer um insert com SQLAlchemy; porém, vamos focar na que segue o mesmo padrão do comando select.
Ela usa uma instrução insert em que você especifica a tabela como argumento e fornece os dados que deseja inserir no valor por meio do método .values() como argumentos nomeados. Por exemplo, se my_table contém as colunas my_col_1 e my_col_2, então insert(my_table).values(my_col_1=5, my_col_2="Example") criará uma linha em my_table com o valor em my_col_1 igual a 5 e o valor em my_col_2 igual a "Example".
Observe a diferença na sintaxe: ao adicionar um where a uma instrução existente, incluímos o nome da tabela além do nome da coluna, por exemplo new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Isso é necessário porque a instrução existente pode envolver várias tabelas.
Por outro lado, você só pode fazer insert de um registro em uma única tabela, então não precisa incluir o nome da tabela ao usar values() para inserir, por exemplo stmt = insert(my_table).values(my_col = 10).
Aqui, o nome da tabela é data. Você pode executar repr(data) no console para examinar a estrutura da tabela.
Este exercício faz parte do curso
Introdução a Bancos de Dados em Python
Instruções do exercício
- Importe
inserteselectdo módulosqlalchemy. - Construa uma instrução de inserção
insert_stmtpara a tabeladatadefinindonamecomo'Anna',countcomo1,amountcomo1000.00evalidcomoTrue. - Execute
insert_stmtcom aconnectione armazene emresults. - Imprima o atributo
.rowcountderesultspara ver quantos registros foram inseridos. - Construa uma instrução de seleção para consultar
datapelo registro comnameigual a'Anna'. - Execute a solução para imprimir os resultados da execução da instrução de seleção.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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())