我试图处理数据库表中的数据。同时加载它们将占用大部分计算机资源。继承我目前的代码
cursor.execute("SELECT * from sometable")
rs = cursor.fetchall()
.
# process 1: set operation
.
for a in rs:
# process 2: put data in another db
有没有办法减少资源使用?就像在循环下一点一点地获取行一样?
答案 0 :(得分:1)
您可以使用cursor.fetchone()
。阅读它here。用法示例:
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")
最后,避免使用星号运算符,只选择所需的列。
答案 1 :(得分:0)
由于之前的SELECT *语句,使用cursor.fetchone()可能仍会导致资源问题。我认为最好的方法是使用LIMIT限制查询结果,然后循环遍历它们。