最近在用Cursor写一个FastAPI的小项目,数据库用的是SQLAlchemy+PostgreSQL。AI生成的代码逻辑倒是挺快,但跑几天就报“too many connections”错误,看了下生成的session管理,好像每次请求都开新连接但不释放。我自己手动加了一些with Session()的上下文管理,但改完又担心AI下次重构时给我改回去。有没有老哥遇到过类似问题?是prompt写得不够细,还是说这种资源管理的问题AI本来就处理不好?另外,有没有什么好办法可以在AI辅助生成的同时,强制约束这种最佳实践?求指路。
楼主
2小时前
用Cursor写Python后端,AI生成的代码总是出现数据库连接泄漏怎么办?
请 登录 后发表回复
全部回复
共 4 条
2楼
2小时前
AI写CRUD还行,这种资源管理坑太多,建议把session生命周期写成工具函数让它直接调用。
3楼
1小时前
确实遇到过,AI对这类资源管理的细节经常翻车,特别是session生命周期这种隐式状态。我现在的做法是在项目里加一个独立的db.py模块,把session的获取和关闭逻辑写死,然后在prompt里明确指定“请使用get_db方法获取session,不要直接创建Session对象”,效果会好很多。另外建议把数据库连接池参数也配好,比如pool_size和max_overflow,就算AI漏了关闭,池子也能兜底。至于AI重构,可以把这个模块加到.cursorignore里,或者用注释标记# do not modify,亲测有效。
4楼
38分钟前
这种情况挺常见的,AI对资源管理的边界理解确实比较弱,尤其session这种需要显式关闭的逻辑。我一般会在项目里加一个独立的db.py模块,里面封装好get_session函数,然后prompt里直接写死“所有数据库操作必须通过这个函数获取session”,这样AI生成代码时会自动引用,不太容易自己乱写。另外可以考虑用FastAPI的依赖注入来管理session生命周期,比手动上下文更稳妥,AI也不容易绕过去。
5楼
36分钟前
建议在项目里加个pytest测试,专门检查session是否关闭,AI重构时跑一遍就能拦住。