You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI+SQLAlchemy+PostgreSQL登录接口触发500内部服务器错误排查求助

FastAPI+SQLAlchemy+PostgreSQL登录接口触发500内部服务器错误排查求助

大家好,我用Python搭了个基于FastAPI、SQLAlchemy和PostgreSQL的网站,现在遇到个麻烦:用户登录的时候直接触发了500内部服务器错误。

补充下相关信息:我是通过HTML/JS表单获取用户输入的邮箱和密码,数据库的编码是UTF-8。

我已经做了以下测试验证:

  • 数据库会话创建函数create_session是正常工作的
  • 登录接口本身是可以正常访问的

下面是我捕获到的完整错误日志:

INFO:     127.0.0.1:54829 - "POST /login HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
  + Exception Group Traceback (most recent call last):
  |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\base.py", line 178, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ~~~~~~~~~~~~~~~~~~~~~~~^^
  |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\anyio\_backends\_asyncio.py", line 767, in __aexit__
  |     raise BaseExceptionGroup(
  |         "unhandled errors in a TaskGroup", self._exceptions
  |     )
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 409, in run_asgi
    |     result = await app(  # type: ignore[func-returns-value]
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |         self.scope, self.receive, self.send
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |     )
    |     ^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__
    |     return await self.app(scope, receive, send)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\fastapi\applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\applications.py", line 112, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\errors.py", line 187, in __call__
    |     raise exc
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\base.py", line 177, in __call__
    |     with recv_stream, send_stream, collapse_excgroups():
    |                                    ~~~~~~~~~~~~~~~~~~^^
    |   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.752.0_x64__qbz5n2kfra8p0\Lib\contextlib.py", line 162, in __exit__
    |     self.gen.throw(value)
    |     ~~~~~~~~~~~~~~^^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\base.py", line 179, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\slowapi\middleware.py", line 136, in dispatch
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\base.py", line 154, in call_next
    |     raise app_exc
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\starlette\routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\fastapi\routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |     ...<3 lines>...
    |     )
    |     ^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\fastapi\routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\main.py", line 79, in login
    |     token = loginUser(email, password)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\db.py", line 98, in loginUser
    |     user = db.query(User).filter(User.email == email, User.password == password).first()
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\query.py", line 2754, in first
    |     return self.limit(1)._iter().first()  # type: ignore
    |            ~~~~~~~~~~~~~~~~~~~^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\query.py", line 2853, in _iter
    |     result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
    |                                                   ~~~~~~~~~~~~~~~~~~~~^
    |         statement,
    |         ^^^^^^^^^^
    |         params,
    |         ^^^^^^^
    |         execution_options={"_sa_orm_load_options": self.load_options},
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |     )
    |     ^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute
    |     return self._execute_internal(
    |            ~~~~~~~~~~~~~~~~~~~~~~^
    |         statement,
    |         ^^^^^^^^^^
    |     ...<4 lines>...
    |         _add_event=_add_event,
    |         ^^^^^^^^^^^^^^^^^^^^^^
    |     )
    |     ^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2241, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2110, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\orm\session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3274, in connect
    |     return self._connection_cls(self)
    |            ~~~~~~~~~~~~~~~~~~~~^^^^^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ~~~~~~~~~~~~~~~~~~~~~^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3298, in raw_connection
    |     return self.pool.connect()
    |            ~~~~~~~~~~~~~~~~~^^
    |   File "C:\Users\Marcus\noCodeProj\testFastApi\venv\Lib\site-packages\sqlalchemy\pool\base.py", lin

希望有大佬能帮我看看问题出在哪,谢谢啦!

备注:内容来源于stack exchange,提问作者Marcucus _

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:28:00