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

使用Python Databases库从MySQL执行fetch_all时触发ValueError报错

异步SQL查询fetch_all抛出ValueError: not enough values to unpack (expected 5, got 4)

调用database.fetch_all(query)时持续触发以下异常:

Traceback (most recent call last):
  ...
  File "c:\users\nikhi\desktop\upwork\srinath srinath\api_project\venv\lib\site-packages\databases\backends\mysql.py", line 115, in fetch_all
    metadata = CursorResultMetaData(context, cursor.description)
  File "c:\users\nikhi\desktop\upwork\srinath srinath\api_project\venv\lib\site-packages\sqlalchemy\engine\cursor.py", line 164, in __init__
    (
ValueError: not enough values to unpack (expected 5, got 4)

使用的代码如下:

from typing import List

import databases
import sqlalchemy
from fastapi import FastAPI
from pydantic import BaseModel

database = databases.Database(DATABASE_URL)

metadata = sqlalchemy.MetaData()

notes = sqlalchemy.Table(
    "notes",
    metadata,
    sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column("text", sqlalchemy.String(100)),
    sqlalchemy.Column("completed", sqlalchemy.Boolean),
)


engine = sqlalchemy.create_engine(
    DATABASE_URL
)
metadata.create_all(engine)

app = FastAPI()


@app.on_event("startup")
async def startup():
    await database.connect()


@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()


@app.get("/notes/", response_model=List[Note])
async def read_notes():
    query = notes.select()
    return await database.fetch_all(query=query)

问题原因及解决办法

该错误源于databases库与SQLAlchemy版本不兼容——SQLAlchemy 2.0+版本的游标描述返回字段数量,和databases库预期的不匹配。

解决方式二选一:

  1. 降级SQLAlchemy到1.4.x系列,执行命令:
    pip install sqlalchemy==1.4.49
    
  2. 升级databases库到最新兼容版本,执行命令:
    pip install --upgrade databases
    

额外检查:确保DATABASE_URL使用了正确的异步驱动

  • MySQL需用mysql+aiomysql://user:password@host/database,且已安装aiomysql:pip install aiomysql
  • PostgreSQL需用postgresql+asyncpg://user:password@host/database,且已安装asyncpg:pip install asyncpg

内容的提问来源于stack exchange,提问作者N. Yeshikhin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:40:29