Resumo : Neste tutorial, você aprenderá como atualizar dados em uma tabela usando MySQL Connector/Python API.
Este tutorial pega onde oO tutorial Inserindo dados em uma tabela foi interrompido.
Para atualizar dados em uma tabela em Python, siga estas etapas:
- Primeiro, conecte-se ao servidor MySQL criando um novo
MySQLConnection
objeto. - A seguir, crie um novo
MySQLCursor
objeto a partir doMySQLConnection
objeto. - Em seguida, chame o
execute()
método doMySQLCursor
objeto. - Depois disso, chame o
commit()
método doMySQLConnection
objeto após chamar oexecute()
método para aplicar as alterações ao banco de dados. - Por fim, feche o cursor e a conexão com o banco de dados.
O programa a seguir define uma função chamada update_book()
para atualizar o valor title
de um livro por book_id
:
from mysql.connector import MySQLConnection, Error
from config import read_config
def update_book(book_id, title):
# read database configuration
config = read_config()
# prepare query and data
query = """ UPDATE books
SET title = %s
WHERE id = %s """
data = (title, book_id)
affected_rows = 0 # Initialize the variable to store the number of affected rows
try:
# connect to the database
with MySQLConnection(**config) as conn:
# update book title
with conn.cursor() as cursor:
cursor.execute(query, data)
# get the number of affected rows
affected_rows = cursor.rowcount
# accept the changes
conn.commit()
except Error as error:
print(error)
return affected_rows # Return the number of affected rows
if __name__ == '__main__':
affected_rows = update_book(37, 'The Giant on the Hill *** TEST ***')
print(f'Number of affected rows: {affected_rows}')
Linguagem de código: Python ( python )
Como funciona.
Primeiro, importe os módulos necessários, incluindo MySQLConnection
e Error
são classes do mysql.connector
módulo e read_config
é uma função de um módulo personalizado config
.
from mysql.connector import MySQLConnection, Error
from config import read_config
Linguagem de código: JavaScript ( javascript )
Segundo, defina uma função chamada update_book
que receba dois parâmetros: book_id
e title
. A função lê a configuração do banco de dados e prepara uma consulta SQL para atualizar o título de um livro com o ID especificado:
def update_book(book_id, title):
# read database configuration
config = read_config()
# prepare query and data
query = """ UPDATE books
SET title = %s
WHERE id = %s """
data = (title, book_id)
Linguagem de código: PHP ( php )
Terceiro, abra uma conexão de banco de dados ( MySQLConnection
) com a configuração do arquivo de configuração e crie um cursor ( cursor
). Dentro da with
instrução aninhada, atualize o título do livro e retorne o número de linhas afetadas obtidas de cursor.rowcount
:
affected_rows = 0 # Initialize the variable to store the number of affected rows
try:
# connect to the database
with MySQLConnection(**config) as conn:
# update book title
with conn.cursor() as cursor:
cursor.execute(query, data)
# get the number of affected rows
affected_rows = cursor.rowcount
# accept the changes
conn.commit()
Linguagem de código: PHP ( php )
Quarto, exiba o erro se ocorrer durante a atualização:
except Error as error:
print(error)
Linguagem de código: JavaScript ( javascript )
Quinto, retorne o número de linhas afetadas:
return affected_rows # Return the number of affected rows
Linguagem de código: PHP ( php )
Por fim, chame a função update_book() para atualizar o livro com id 37 com o novo título:
if __name__ == '__main__':
affected_rows = update_book(37, 'The Giant on the Hill *** TEST ***')
print(f'Number of affected rows: {affected_rows}')
Linguagem de código: PHP ( php )
Executando a atualização
Primeiro, abra o prompt de comando no Windows ou o Terminal em sistemas do tipo Unix:
mysql -u root -p
Segundo, mude o banco de dados atual para pub:
USE pub;
Linguagem de código: PHP ( php )
Terceiro, recupere o livro com ID 37:
SELECT * FROM books
WHERE id = 37;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+------------------------+---------------+
| id | title | isbn |
+----+------------------------+---------------+
| 37 | The Giant on the Hill | 1235644620578 |
+----+------------------------+---------------+
1 row in set (0.01 sec)
Linguagem de código: JavaScript ( javascript )
Quarto, abra o segundo terminal e execute o update.py
módulo (observe que você precisa ativar o ambiente virtual se for relevante):
python update.py
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Number of affected rows: 1
Linguagem de código: JavaScript ( javascript )
Por fim, volte ao terminal mysql e recupere o livro com id 37 para verificar a atualização:
SELECT * FROM books
WHERE id = 37;
Saída:
+----+------------------------------------+---------------+
| id | title | isbn |
+----+------------------------------------+---------------+
| 37 | The Giant on the Hill *** TEST *** | 1235644620578 |
+----+------------------------------------+---------------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
A saída indica que o update.py
programa atualizou o ID do livro 37 com êxito.
Resumo
- Use o
execute()
método do objeto cursor para executar uma instrução de atualização e chame o commit do objeto de conexão para aplicar as alterações ao banco de dados.