← Back to context

Comment by frollogaston

11 hours ago

Oh wow. Dep injection for DB connections is nasty.

I might be outing myself as a noob here, but... what is the (better) alternative?

  • You inject the pool itself.

    • Sorry, I am being dense... how does that solve the problem?

      I still have to get a connection from the pool, I just do it inside the function body now, right?

      So this

          @app.get("/users")
          def get_users(conn = Depends[get_db_conn]):
              users = conn.execute("SELECT * FROM users")
              return users
      

      would become that instead:

          @app.get("/users")
          def get_users(pool = Depends[get_db_pool]):
              with pool.get_conn() as conn:
                  users = conn.execute("SELECT * FROM users")
              return users
      

      But I still need enough connections in the pool to handle all concurrent requests, no?