Fatal Python error: Cannot recover from stack overflow.
驗(yàn)證后臺最后一組API時,查詢已有數(shù)據(jù)報(bào)錯。
@application.get('/get_data')
def get_data(city: str = None, skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
data = crud.get_data(db, city=city, skip=skip, limit=limit)
return data ? ?
如果查詢已存在數(shù)據(jù),終端報(bào)錯內(nèi)存溢出.........但之前查詢不存在數(shù)據(jù)或不填入城市名稱時并不會報(bào)錯
FROM data?
WHERE EXISTS (SELECT 1?
FROM city?
WHERE city.id = data.city_id AND city.province = ?) ORDER BY data.date DESC
2021-04-13 22:02:16,059 INFO sqlalchemy.engine.base.Engine ('Shanghai',)
Fatal Python error: Cannot recover from stack overflow.
2021-10-04
這個問題搞了我一晚上, 終于找到問題出在哪了……
這段代碼里, 當(dāng) city 沒有值的時候, 是走下面一條, 注意到最后一行有一個 .all()?
這個方法會傳回真實(shí)數(shù)據(jù)的 list
反觀 if 為真的時候, 結(jié)尾沒有 .all(), 這個時候返回的是一個 Query, 不是 list, 自然也無法被 fastapi 轉(zhuǎn)為有意義的輸出, 就報(bào)錯了. 我是加上 .all() 之后, 就可以正常跑了