玖1687877
我也遇到了这个问题
慕斯841260
自问自答了:去掉connect_args={"check_same_thread": False},就不报错了,但如何配置check_same_thread=False呢?
qq_慕仔3049912
好吧,专业版pycharm才有,但是自己下的database,看得一愣一愣的,MySQL的话,怎么连接啊
Mecil9
我也碰到这个错误了,请问你怎么修复的?谢谢
Jack2022
# crud.py文件里有个错误 return db.query(models.Data).filter(models.Data.city.has(province=city)) '问题出现在这行代码,缺少了'.all() 。改为:return db.query(models.Data).filter(models.Data.city.has(province=city)).all()就可以了
慕前端6127854
不是一个东西,一个是 web 框架,一个是数据库的 ORM
虾叔叔
这个问题搞了我一晚上, 终于找到问题出在哪了……
def get_data(db: Session, city: str = None, skip: int = 0, limit: int = 10): if city: return db.query(models.Data).filter(models.Data.city.has(province=city)) return db.query(models.Data).order_by(desc(models.Data.confirmed)).offset(skip).limit(limit).all()
这段代码里, 当 city 没有值的时候, 是走下面一条, 注意到最后一行有一个 .all()
这个方法会传回真实数据的 list
反观 if 为真的时候, 结尾没有 .all(), 这个时候返回的是一个 Query, 不是 list, 自然也无法被 fastapi 转为有意义的输出, 就报错了. 我是加上 .all() 之后, 就可以正常跑了
qq_慕少1285967
改成这样:
return db.query(models.Data).join(models.City).filter(models.City.province == city).all()
qq_慕少1285967
太厉害了你
qq_俄就这样_0
个人感觉这是个好问题
fastapi.response 下面, 有多种类型的对象, 例如 HTTPResponse, JSONResponse, FileResponse, StreamResponse 等
感觉你的问题可以返回一个自定义的 JSONResponse 来解决
除了这些对象, 还有一个终极大杀招. 就是调用一个更“一般”的 Response 类
你可以传递一个字典到这个类里面, 想传什么数据随意