Python新手在公司项目中没人带,如何自己摸索并解决问题?

公司做的是一个交易系统后台信息的展示 交易量每个月大概会有几百万笔 不排除后期会有几千万条记录甚至上亿的交易记录 目前几十万笔交易的查询展示我都觉得还好 把 sqlalchemy 查到的 resultset 遍历一遍 放到一个列表中 然后转换成 json 返回给前台 用 jq 的 datatables 的去展示 但是如果几千万条的记录 我中间要怎么处理吗 程序卡在了把结果集放到列表的这个过程中 求大佬们指教下 没写过这么大数据量的东西
Python新手在公司项目中没人带,如何自己摸索并解决问题?

5 回复

不做分页吗


核心思路:自己搭环境、拆解问题、善用工具、建立知识库。

  1. 复现环境:用虚拟环境(venvconda)隔离项目依赖,通过requirements.txtpip freeze还原开发环境,确保本地能跑通。
  2. 拆解问题:遇到报错先看完整堆栈,定位到具体模块和行号;如果是功能问题,先理清数据流(从输入到输出每一步)。
  3. 工具辅助
    • Debug:别光用print,学会用pdbimport pdb; pdb.set_trace())或IDE断点逐行跟踪变量。
    • 日志:在关键节点加logging记录状态,比print更结构化。
    • 代码追溯:用grep或IDE全局搜索关键词,找到函数调用关系。
  4. 搜索技巧
    • 错误信息去掉项目特有路径再搜,优先看Stack Overflow和官方文档。
    • GitHub搜类似功能的开源项目,看别人怎么写。
  5. 小步验证:对不确定的代码,单独写个测试脚本模拟场景,快速试错。
  6. 笔记沉淀:用Markdown记录常见错误和解决方案,积累成自己的“内部文档”。

总结:把项目当黑盒,用工具和最小化测试逆向拆解。

说心理话没明白你的需求。
使用的数据库的原则就是,尽量减小 IO 交互。
方案一、一次性把要用的数据全部取出,放在内存缓存,以后不再访问数据库。
方案二、每次只取用到的最小集合。

为了支持方案二,所有数据库都支持 where 子句和 limit 语法。
select * from table limit m,n
其中 m 是指记录开始的 index,从 0 开始,表示第一条记录
n 是指从第 m+1 条开始,取 n 条。

在常见 ORM 中:
SA 用的是.filter().limit().offset() 来实现对应的 SQL
Django 的 ORM 更简洁一些,Model.objects.filter()[m:n]

sqlalchemy 执行 SQL 语句生成的 RowProxy 要自己写分页吧??

研究了大半天 我大概摸清套路了

回到顶部