python - SQLite 的分页
问题描述
嘿朋友我正在开发一个类似于现在服务的应用程序。我有来自用户的请求并且必须处理它。我为此使用 python-flask 和 sqlite。
我是烧瓶的新手,这是我的第一个项目。如果我错了,请纠正我。
result = cur.execute("SELECT * from orders")
orders = result.fetchmany(5)
我正在尝试使用orders = result.paginate(...)
不过好像有点问题。另外,我不确定如何在不同页面中显示数据库数据。
我想要第一页上的前 10 条记录,第二页上的下 10 条记录,依此类推..
请你帮助我好吗?
解决方案
我从未使用过烧瓶,但假设您可以发出分页/页面抛出,那么引入值 0-9 的查询将允许有条件的页面抛出。
例如,假设一个订单表有 3 列orderdate,ordertype,orderdesc并且所需的顺序是根据这些列(见注释)的列,那么下面将引入一个从 0 到 9 的列,因此允许检查是否有投掷:-
SELECT *,
(
SELECT count()
FROM ORDERS
WHERE orderdate||ordertype||orderdesc < o.orderdate||o.ordertype||o.orderdesc
ORDER BY orderdate||ordertype||orderdesc
) % 10 AS orderby
FROM ORDERS AS o ORDER BY orderdate||ordertype||orderdesc
- 请注意,以上依赖于排序顺序和具有相同结果的 where 子句,可能需要更复杂的 WHERE 子句。以上旨在作为原则上的示例。
示例用法
考虑以下使用中的上述示例。这会生成 100 行订单,其中随机生成的订单日期和订单类型在特定范围内,然后根据上述查询提取数据。underyling 数据和提取数据的结果显示在结果部分。
/* Create Test Environment */
DROP TABLE IF EXISTS orders;
/* Generate and load some random orders */
CREATE TABLE If NOT EXISTS orders (orderdate TEXT, ordertype TEXT, orderdesc TEXT);
WITH RECURSIVE cte1(od,ot,counter) AS
(
SELECT
datetime('now','+'||(abs(random()) % 10)||' days'),
(abs(random()) % 26),
1
UNION ALL SELECT
datetime('now','+'||(abs(random()) % 10)||' days'),
(abs(random()) % 26),
counter+1
FROM cte1 LIMIT 100
)
INSERT INTO orders SELECT * FROM cte1;
/* Display the resultant data */
SELECT rowid,* FROM orders;
/* Display data with generated page throw indicator */
SELECT rowid,*,
(
SELECT count()
FROM ORDERS
WHERE orderdate||ordertype||orderdesc < o.orderdate||o.ordertype||o.orderdesc
ORDER BY orderdate||ordertype||orderdesc
) % 10 AS orderby
FROM ORDERS AS o ORDER BY orderdate||ordertype||orderdesc;
/* Clean up */
DROP TABLE IF EXISTS orders;
结果(部分)
核心数据(未按 rowid 排序(包含 rowid 用于比较目的)):-
带有页面抛出指示符的提取数据(突出显示)
- 显然,您可能不会为第一行添加页面。
- 由于为方便起见使用了 3 列的串联,因此结果可能有点混乱,例如 2 似乎大于 11,依此类推。
- rowid 表示原来的位置,所以说明数据已经排好序了。
推荐阅读
- node.js - 将 socket.io 套接字传递给分叉节点子进程
- apache-kafka - Kafka 消费者应该在生产者之前启动吗?
- css - 如何限制引导容器的高度
- unity3d - 统一的 ARCore 与 Sceneform 功能/用例?
- java - 仅在本地运行时出现 NoClassDefFoundError 错误
- python - Anaconda - 箭头键在 python shell 中不能正常工作
- c# - 是否可以将以下内容简化为一行?
- amazon-web-services - 我的 Amazon RDS 出现异常行为
- yii - 如何从 url 找到 YII 路由
- swagger - 在 Swagger 上,哪个是编写 yaml 文件的正确方法?