es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conexiones múltiples de base de datos utilizando fastapi

Soy un traductor de documentos de TI en español. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy nuevo en FAST API y no tengo mucho conocimiento al respecto. Quería conectar varias bases de datos.

Intenté revisar https://github.com/tiangolo/fastapi/issues/2592, pero no pude entender el enfoque. También estaba curioso sobre cómo sería capaz de extraer datos de la base de datos y también actualizar los valores en la misma.

Sería genial si alguien pudiera ayudarme, ¿hay otros ejemplos o métodos que puedan hacer el trabajo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¡Hola!

    Conectar a múltiples bases de datos en FastAPI se puede hacer usando SQLAlchemy, en lo cual mencionaste que te especializas. Una forma de conectar a múltiples bases de datos es creando motores de base de datos separados dentro de la misma aplicación de FastAPI. Aquí tienes un ejemplo:

    from fastapi import FastAPI
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    
    app = FastAPI()
    
    # crear un motor para database1
    engine1 = create_engine('postgresql://user:password@database1_host/database1')
    
    # crear un motor para database2
    engine2 = create_engine('postgresql://user:password@database2_host/database2')
    
    # crear una fábrica de sesión
    Session = sessionmaker()
    
    # unir la fábrica de sesión a cada motor
    Session.configure(bind=engine1)
    session1 = Session()
    
    Session.configure(bind=engine2)
    session2 = Session()
    
    # definir ruta para consultar datos de database1 usando session1
    @app.get('/data1')
    def get_data1():
        data = session1.query(SomeTable).all()
        return data
    
    # definir ruta para consultar datos de database2 usando session2
    @app.get('/data2')
    def get_data2():
        data = session2.query(AnotherTable).all()
        return data
    

    En este ejemplo, creamos dos motores de base de datos (engine1 y engine2) y los unimos a sesiones separadas (session1 y session2). Esto nos permite consultar datos de diferentes bases de datos dentro de la misma aplicación de FastAPI.

    En cuanto a consultar y actualizar datos, puedes usar el método query de SQLAlchemy para consultar datos y el método update para actualizar los valores en la base de datos. Aquí tienes un ejemplo:

    # consultar datos de database1 usando session1
    data = session1.query(SomeTable).filter(SomeTable.id == 1).all()
    
    # actualizar datos en database1 usando session1
    record = session1.query(SomeTable).filter(SomeTable.id == 1).first()
    record.columna = nuevo_valor
    session1.commit()
    

    ¡Espero que esto te ayude! Si tienes cualquier otra pregunta, no dudes en preguntar. Además, hay muchos otros ejemplos y métodos disponibles en el sitio web de documentación de SQLAlchemy: https://docs.sqlalchemy.org/en/14/orm/index.html

Comments are closed.