Python内存错误

0 投票
3 回答
1982 浏览
提问于 2025-04-16 22:27

我遇到了内存错误

我在使用 Python 2.6 和 pyodbc。

这段代码在执行多个 SQL 语句时会循环运行。单独运行时没问题,但循环的时候就卡住了。有时候循环能正常工作。

for Sql in LoopList:
     f = csr.execute(Sql)
     LL = list(f) 

循环中的第二个元素会崩溃。

Sql:

Sql   =""" SELECT * FROM group WHERE 
        C>10 AND M <0 AND S<0  
        AND TC >= 200 AND OC >=1000  and Penny =.01 
        ORDER BY MSlp           
"""

3 个回答

0

因为你的查询返回的数据太多,导致无法存储在内存里,所以可以试试快速解决办法:增加你的虚拟内存。

  1. 打开“我的电脑”
  2. 右键点击,选择“属性”
  3. 进入“高级系统设置”
  4. 点击“高级”选项卡
  5. 在“性能”下点击“设置”
  6. 在“高级”选项卡下点击“更改”
  7. 增加内存大小,这样就会增加虚拟内存的大小。

这样做会把你的一部分硬盘空间变成虚拟内存,如果你的数据可以放进分配的内存里,那么问题就解决了。

4

你的查询返回的数据太多,无法放进内存里。execute 可能只是在一次只保留一个数据项在内存中,但如果把它转换成 list,就需要把查询返回的每一个数据项都放进内存里。

0

解决办法是在MySQL里面使用存储过程来做SQL循环列表,然后从Python中调用它。这样就消除了Python的错误。

另外,还可以用numpy来测试字节大小。

撰写回答