Skip to content

Instantly share code, notes, and snippets.

@contato318
Last active May 15, 2023 16:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save contato318/9f6753914ae4fd441f3a7dfa762fab8d to your computer and use it in GitHub Desktop.
Save contato318/9f6753914ae4fd441f3a7dfa762fab8d to your computer and use it in GitHub Desktop.

Para criar uma conexão reutilizável com o banco MySQL utilizando FastAPI e Python, você pode seguir os seguintes passos:

  1. Instale o pacote mysql-connector-python:

    pip install mysql-connector-python
    
  2. Crie um arquivo database.py que irá conter uma função para criar a conexão com o banco de dados e retornar uma conexão do pool de conexões. Esse arquivo pode ser utilizado em múltiplos arquivos, caso seja necessário.

    import mysql.connector
    from mysql.connector import pooling
    
    dbconfig = {
        "host": "localhost",
        "user": "user",
        "password": "password",
        "database": "database",
        "pool_size": 5
    }
    
    connection_pool = pooling.MySQLConnectionPool(pool_name="mypool", pool_size=dbconfig["pool_size"], **dbconfig)
    
    def get_connection():
        return connection_pool.get_connection()
  3. Utilize a função get_connection() para obter uma conexão com o banco de dados em qualquer rota que precise se comunicar com o banco de dados.

    from fastapi import FastAPI
    from database import get_connection
    
    app = FastAPI()
    
    @app.get("/")
    async def root():
        connection = get_connection()
        cursor = connection.cursor()
        cursor.execute("SELECT * FROM tabela")
        results = cursor.fetchall()
        connection.close()
        return {"results": results}

Dessa forma, você pode criar uma conexão com o banco de dados reutilizável em todas as rotas utilizando pool de conexões e a função get_connection(). Lembre-se de fechar a conexão após usá-la para evitar vazamento de recursos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment