用Python mysqldb 程序化设置offset/limit
我正在尝试处理数据库表中的数据。如果一次性加载所有数据,会占用大部分计算机资源。以下是我现在的代码:
cursor.execute("SELECT * from sometable")
rs = cursor.fetchall()
.
# process 1: set operation
.
for a in rs:
# process 2: put data in another db
有没有办法减少资源的使用呢?比如在一个循环中逐行获取数据?
2 个回答
1
使用cursor.fetchone()可能还是会导致资源问题,因为在它之前有一个SELECT *的语句。我认为最好的办法是用LIMIT来限制查询结果,然后逐个处理这些结果。
1
你可以使用 cursor.fetchone()
这个方法。想了解更多,可以在 这里 阅读。下面是一个使用的例子:
cursor.execute(query)
numrows = int(cursor.rowcount)
for x in range(0,numrows):
row = cursor.fetchone()
你也可以考虑在 MySQL 查询中使用 LIMIT,这样可以限制返回的结果数量:
cursor.execute("SELECT * from sometable LIMIT 0, 100")
最后,尽量避免使用星号(*)来选择所有列,最好只选择你需要的那些列。