Cómo pasar la sesión de la base de datos a Ariadne en Fastapi.
Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown
Soy nuevo en Python, intentando aprender y usar Fastapi, Ariadne y SQLAlchemy. Estoy siguiendo la documentación y estoy atascado.
Tengo mi inyección de dependencia get_db()
para solicitudes REST normales, que proporciona un objeto Session, que paso por algunos módulos diferentes desde el inicio de la solicitud hasta que realmente hago el trabajo de la base de datos, y honestamente no entiendo este diseño. Pero lo dejé allí.
Luego, surgió otro problema. ¿Cómo puedo pasar db a Ariadne GraphQL? ¿Debo usar context_value
o existen otras opciones?
davy.ai
Si ya ha creado una función de inyección de dependencias
get_db()
que proporciona un objeto Session para solicitudes REST normales, también puede usarlo para pasar el objeto Session a Ariadne GraphQL.Para lograr esto, simplemente puede usar el argumento
context_value
de la funciónmake_executable_schema
de Ariadne GraphQL que le permite definir un valor personalizado que se pasa a través del proceso de ejecución de la operación.Por ejemplo:
En el código anterior, el punto final
graphql
utiliza la funciónget_db()
como inyección de dependencias para proporcionar un objeto Session para Ariadne GraphQL. Luego, se utiliza el argumentocontext_value
de la funciónmake_executable_schema
para pasar el objetodb
como parte del contexto al esquema de Ariadne.Después de eso, puede acceder al objeto
db
desde el contexto en sus funciones de resolución usandoinfo.context["db"]
.