Python MySQL – Inserir dados em uma tabela

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 MySQLConnectionobjeto.
  • Segundo, crie um MySQLCursorobjeto a partir do MySQLConnectionobjeto.
  • Terceiro, execute a INSERTinstruçã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 bookstabela:

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 MySQLConnectione Errordo mysql.connectormó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_configLinguagem 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 withinstrução para abrir uma conexão de banco de dados ( MySQLConnection) e criar um cursor ( cursor). Usamos a **configsintaxe para passar argumentos de palavras-chave do configdicioná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 withinstruçã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 bookstabela:

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 bookstabela:

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 MySQLCursorobjeto.

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 MySQLCursorobjeto, o MySQL Connector/Python traduz a  INSERTinstrução naquela que contém múltiplas listas de valores.

Resumo

  • Use o execute()método para executar uma INSERTinstrução que insere uma linha em uma tabela.
  • Use o executeMany()método para executar uma INSERTinstrução que insere várias linhas em uma tabela.

Deixe um comentário

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