Python MySQL – Conecte-se a um banco de dados MySQL em Python

Resumo : neste tutorial, você aprenderá como se conectar a bancos de dados MySQL de Python usando MySQL Connector/Python API.

Este tutorial continua de onde o tutorial Introdução ao MySQL Python Connector parou.

Configurando um banco de dados de exemplo

Primeiro, baixe o seguinte  pubbanco de dados, descompacte o arquivo zip e copie-o para um diretório como C:\temp\pub.sql:

Baixe o banco de dados de amostra do Pub

Segundo, abra o prompt de comando no Windows ou Terminal em sistemas do tipo Unix e conecte-se a um servidor MySQL usando a ferramenta cliente mysql:

mysql -u root -pLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Digite a senha do rootusuário.

Enter password: ********Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, execute as instruções SQL no pub.sqlarquivo usando o SOURCEcomando:

SOURCE c:\temp\pub.sqlLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O comando criará um novo banco de dados chamado pubcom algumas tabelas.

Quarto, mude o banco de dados atual para pub:

USE pub;Linguagem de código:  PHP  ( php )

Quinto, exiba todas as tabelas do pubbanco de dados usando o SHOW TABLEScomando:

SHOW TABLES;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A saída será:

+---------------+
| Tables_in_pub |
+---------------+
| authors       |
| book_author   |
| books         |
+---------------+
3 rows in set (0.01 sec)Linguagem de código:  JavaScript  ( javascript )

Finalmente, saia da ferramenta cliente mysql:

exitLinguagem de código:  PHP  ( php )

Conectando-se ao banco de dados MySQL

Crie o seguinte connect.pyarquivo no diretório do projeto e adicione o seguinte código ao arquivo:

import mysql.connector

# Initialize a variable to hold the database connection
conn = None

try:
    # Attempt to establish a connection to the MySQL database
    conn = mysql.connector.connect(host='localhost', 
                                   port=3306,
                                   database='pub',
                                   user='<user>',
                                   password='<password>')
    
    # Check if the connection is successfully established
    if conn.is_connected():
        print('Connected to MySQL database')

except mysql.connector.Error as e:
    # Print an error message if a connection error occurs
    print(e)

finally:
    # Close the database connection in the 'finally' block to ensure it happens
    if conn is not None and conn.is_connected():
        conn.close()
Linguagem de código:  Python  ( python )

Como funciona:

Primeiro, importe o mysql.connectormódulo:

import mysql.connectorLinguagem de código:  JavaScript  ( javascript )

Segundo, inicialize uma connvariável para None:

conn = None

Terceiro, use o connect()método para conectar-se ao servidor MySQL:

conn = mysql.connector.connect(host='localhost', 
                                port=3306,
                                database='pub',
                                user='<root>',
                                password='<password>')Linguagem de código:  JavaScript  ( javascript )

O connect()método aceita host, porta, nome do banco de dados, usuário e senha. Você deve alterar os detalhes da conexão para os seus.

Observe que você precisa substituir o usuário/senha pelo usuário/senha real.

Quarto, verifique se a conexão foi criada e exiba uma mensagem se a conexão for criada com sucesso:

if conn.is_connected():
    print('Connected to MySQL database')Linguagem de código:  PHP  ( php )

Se ocorrer um erro durante o processo de conexão, exiba um erro no exceptbloco.

print(e)Linguagem de código:  PHP  ( php )

Por fim, feche a conexão com o banco de dados no finallybloco:

if conn is not None and conn.is_connected():
        conn.close()Linguagem de código:  CSS  ( css )

Executando o módulo connect.py

Para executar o connect.pymódulo, siga estas etapas:

Primeiro, abra o prompt de comando no Windows ou um terminal em sistemas do tipo Unix.

Segundo, vá para o diretório do projeto.

cd pub

Terceiro, ative o ambiente virtual:

/venv/scripts/activate 

Terceiro, execute o connect.pymódulo:

python connect.pyLinguagem de código:  CSS  ( css )

Saída:

Connected to MySQL database

A saída indica que nos conectamos ao servidor MySQL com sucesso.

Neste exemplo, incorporamos a configuração do banco de dados, incluindo a senha, diretamente no código. No entanto, não é considerada uma prática recomendada.

Para resolver esse problema, vamos aprimorar o código incorporando um arquivo de configuração de banco de dados separado.

Usando um arquivo de configuração

Primeiro, crie um arquivo de configuração de banco de dados nomeado app.inino diretório do projeto e defina uma seção chamada mysql com os seguintes parâmetros:

[mysql]
host = localhost
port = 3306
database = pub
user = <user>
password = <password>Linguagem de código:  HTML, XML  ( xml )

Segundo, crie um novo arquivo config.pyno diretório do projeto que leia o arquivo de configuração app.ini e retorne um dicionário que contém a conexão com o banco de dados:

from configparser import ConfigParser

def read_config(filename='app.ini', section='mysql'):    
    # Create a ConfigParser object to handle INI file parsing
    config = ConfigParser()
    
    # Read the specified INI configuration file
    config.read(filename)

    # Initialize an empty dictionary to store configuration data
    data = {}

    # Check if the specified section exists in the INI file
    if config.has_section(section):
        # Retrieve all key-value pairs within the specified section
        items = config.items(section)

        # Populate the data dictionary with the key-value pairs
        for item in items:
            data[item[0]] = item[1]
    else:
        # Raise an exception if the specified section is not found
        raise Exception(f'{section} section not found in the {filename} file')

    # Return the populated data dictionary
    return data

if __name__ == '__main__':
    # Read the configuration from the default section ('mysql') in the 'app.ini' file
    config = read_config()

    # Display the obtained configuration
    print(config)
Linguagem de código:  Python  ( python )

Terceiro, modifique o módulo connect.py que usa o módulo config.py para conectar-se ao banco de dados MySQL:

from mysql.connector import MySQLConnection, Error
from config import read_config


def connect(config):
    """ Connect to MySQL database """
    conn = None
    try:
        print('Connecting to MySQL database...')
        conn = MySQLConnection(**config)

        if conn.is_connected():
            print('Connection is established.')
        else:
            print('Connection is failed.')
    except Error as error:
        print(error)
    finally:
        if conn is not None and conn.is_connected():
            conn.close()
            print('Connection is closed.')


if __name__ == '__main__':
    config = read_config()
    connect(config)Linguagem de código:  Python  ( python )

Finalmente, execute o módulo connect.py:

python connect.pyLinguagem de código:  CSS  ( css )

Observe que você precisa ativar o ambiente virtual antes de executar este comando.

Resumo

  • Use a connect()função ou MySQLConnectionclasse para conectar-se ao servidor MySQL.

Deixe um comentário

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