记录集迭代
我想使用 Perl 迭代从 MySQL 数据库返回的记录,但一次只能迭代 10 条记录。 原因是服务器组件每个请求只能处理 10 个项目。
例如:
如果查询返回 35 条记录,则 我必须在 4 个请求中发送数据:
Request # # of Records -------- -------- 1 10 2 10 3 10 4 5
完成任务的最佳方法是什么?
I want to iterate through records returned from a MySQL database using Perl, but only ten records at a time. The reason is that the server component can only handle 10 items per request.
For example:
If the query returned 35 records then
I have to send the data in 4 requests:
Request # # of Records -------- -------- 1 10 2 10 3 10 4 5
What is the best way to accomplish the task?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
查看 MySQL 的 LIMIT 子句。 您可以进行如下查询:
等,其中 LIMIT 之后的第一个数字是偏移量,第二个数字是记录数。
当然,您首先需要对总计数进行查询,并计算出需要运行选择查询多少次才能获取所有结果。
或者,在 Perl 中,您可以使用像 DBIx::Class 这样的 ORM 包,它可以通过结果集处理分页并自动检索它们。
Look at the LIMIT clause for MySQL. You could have a query like:
etc. where the first number after LIMIT is the offset, and the second number is the number of records.
You'd of course first need to do a query for the total count and figure out how many times you'll need to run your select query to get all results.
Alternatively, in Perl you can use an ORM package like DBIx::Class that can handle pagination through sets of results and auto-retrieving them for you.
您可以调整查询以选择 10 行:
迭代行时,存储您处理的行的 ID。 处理完 10 行后,获取接下来的 10 行:
继续上一个查询,直到返回的行数少于 10 行。
You can adjust the query to select 10 rows:
When iterating over the rows, store the ID of the row you process. After you've processed 10 rows, fetch the next 10:
Continue the last query until it returns less than 10 rows.
对于第一页:
对于第二页:
等等。
For first page:
For seconds page:
etc.