Resumo : neste tutorial, você aprenderá como inserir dados em uma tabela usando MySQL Connector/Python API.
Este tutorial continua de onde o tutorial Consultando dados de uma tabela em Python parou.
Para inserir novas linhas em uma tabela MySQL, siga estas etapas:
- Primeiro, conecte-se ao servidor de banco de dados MySQL criando um novo
MySQLConnection
objeto. - Segundo, crie um
MySQLCursor
objeto a partir doMySQLConnection
objeto. - Terceiro, execute a
INSERT
instrução para inserir dados na tabela. - Finalmente, feche a conexão com o banco de dados.
MySQL Connector/Python fornece uma API que permite inserir uma ou várias linhas em uma tabela por vez. Vamos examinar cada método com mais detalhes.
Inserir uma linha em uma tabela
O programa a seguir define uma função chamada insert_book()
que insere um novo livro na books
tabela:
from mysql.connector import MySQLConnection, Error
from config import read_config
def insert_book(title, isbn):
query = "INSERT INTO books(title,isbn) " \
"VALUES(%s,%s)"
args = (title, isbn)
book_id = None
try:
config = read_config()
with MySQLConnection(**config) as conn:
with conn.cursor() as cursor:
cursor.execute(query, args)
book_id = cursor.lastrowid
conn.commit()
return book_id
except Error as error:
print(error)
if __name__ == '__main__':
insert_book('A Sudden Light', '9781439187036')
Linguagem de código: Python ( python )
Como funciona.
Primeiro, importe os módulos necessários, incluindo as classes MySQLConnection
e Error
do mysql.connector
módulo, e read_config
é uma função importada de um módulo personalizado chamado config
:
from mysql.connector import MySQLConnection, Error
from config import read_config
Linguagem de código: JavaScript ( javascript )
Segundo, defina uma função insert_book()
que aceite dois argumentos: título e ISBN e prepare uma consulta SQL para inserir uma nova linha na tabela de livros:
def insert_book(title, isbn):
query = "INSERT INTO books(title,isbn) " \
"VALUES(%s,%s)"
args = (title, isbn)
Linguagem de código: JavaScript ( javascript )
Terceiro, use a with
instrução para abrir uma conexão de banco de dados ( MySQLConnection
) e criar um cursor ( cursor
). Usamos a **config
sintaxe para passar argumentos de palavras-chave do config
dicionário:
try:
config = read_config()
with MySQLConnection(**config) as conn:
with conn.cursor() as cursor:
Linguagem de código: JavaScript ( javascript )
Quarto, execute a consulta usando o método execute() do cursor com os argumentos fornecidos (args) e retorne o id inserido da linha:
cursor.execute(query, args)
book_id = cursor.lastrowid
Sexto, confirme as alterações no banco de dados usando o commit()
método:
conn.commit()
Linguagem de código: CSS ( css )
Sétimo, mostre a mensagem de erro caso ela ocorra durante a execução:
except Error as error:
print(error)
Linguagem de código: JavaScript ( javascript )
Observe que a with
instrução se encarrega automaticamente de fechar o cursor e a conexão com o banco de dados, mesmo que ocorra uma exceção.
Por fim, chame a insert_book()
função para inserir um novo livro na books
tabela:
if __name__ == '__main__':
insert_book('A Sudden Light', '9781439187036')
Linguagem de código: JavaScript ( javascript )
Inserir várias linhas em uma tabela
A INSERT
instrução a seguir permite inserir várias linhas na books
tabela:
INSERT INTO books(title,isbn)
VALUES('Harry Potter And The Order Of The Phoenix', '9780439358071'),
('Gone with the Wind', '9780446675536'),
('Pride and Prejudice (Modern Library Classics)', '9780679783268');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para inserir várias linhas em uma tabela do Python, você usa o executemany()
método do MySQLCursor
objeto.
from mysql.connector import MySQLConnection, Error
from config import read_config
def insert_books(books):
query = "INSERT INTO books(title,isbn) " \
"VALUES(%s,%s)"
try:
config = read_config()
with MySQLConnection(**config) as conn:
with conn.cursor() as cursor:
cursor.executemany(query, books)
conn.commit()
except Error as error:
print(error)
if __name__ == '__main__':
books = [('Harry Potter And The Order Of The Phoenix', '9780439358071'),
('Gone with the Wind', '9780446675536'),
('Pride and Prejudice (Modern Library Classics)', '9780679783268')]
insert_books(books)
Linguagem de código: Python ( python )
A lógica neste exemplo é semelhante à lógica do primeiro exemplo. Porém, em vez de chamar o execute()
método, chamamos executemany()
método.
Para inserir múltiplas linhas na tabela books, passamos para a insert_books()
função uma lista de tuplas, cada uma contendo o título e o ISBN do livro.
Ao chamar o executemany()
método do MySQLCursor
objeto, o MySQL Connector/Python traduz a INSERT
instrução naquela que contém múltiplas listas de valores.
Resumo
- Use o
execute()
método para executar umaINSERT
instrução que insere uma linha em uma tabela. - Use o
executeMany()
método para executar umaINSERT
instrução que insere várias linhas em uma tabela.