首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

公司项目没人带 只能自己摸索 来问大佬们一个问题

  •  
  •   Linxing · 2018-03-11 10:42:57 +08:00 · 1396 次点击
    这是一个创建于 435 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司做的是一个交易系统后台信息的展示 交易量每个月大概会有几百万笔 不排除后期会有几千万条记录甚至上亿的交易记录 目前几十万笔交易的查询展示我都觉得还好 把 sqlalchemy 查到的 resultset 遍历一遍 放到一个列表中 然后转换成 json 返回给前台 用 jq 的 datatables 的去展示 但是如果几千万条的记录 我中间要怎么处理吗 程序卡在了把结果集放到列表的这个过程中 求大佬们指教下 没写过这么大数据量的东西
        1
    loongwang   2018-03-11 12:46:24 +08:00
    不做分页吗
        2
    xpresslink   2018-03-11 14:32:24 +08:00
    说心理话没明白你的需求。
    使用的数据库的原则就是,尽量减小 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]
        3
    Linxing   2018-03-11 16:11:16 +08:00
    @loongwang sqlalchemy 执行 SQL 语句生成的 RowProxy 要自己写分页吧??
        4
    Linxing   2018-03-11 16:12:53 +08:00
    @xpresslink 研究了大半天 我大概摸清套路了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3457 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 05:21 · PVG 13:21 · LAX 22:21 · JFK 01:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1