Python MySQL – Atualizar dados em uma tabela – 02

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 MySQLConnectionobjeto.
  • A seguir, crie um novo MySQLCursorobjeto a partir do MySQLConnectionobjeto.
  • Em seguida, chame o execute()método do MySQLCursorobjeto.
  • Depois disso, chame o commit()método do MySQLConnectionobjeto após chamar o execute()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 titlede 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 MySQLConnectione Errorsão classes do mysql.connectormódulo e read_configé uma função de um módulo personalizado config.

from mysql.connector import MySQLConnection, Error
from config import read_configLinguagem de código:  JavaScript  ( javascript )

Segundo, defina uma função chamada update_bookque receba dois parâmetros: book_ide 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 withinstruçã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 rowsLinguagem 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.pymódulo (observe que você precisa ativar o ambiente virtual se for relevante):

python update.pyLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

Number of affected rows: 1Linguagem 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.pyprograma 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *