首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Django + SQLite3的内存使用情况

使用Django + SQLite3的内存使用情况
EN

Stack Overflow用户
提问于 2010-03-10 22:25:20
回答 2查看 985关注 0票数 3

我有一个非常大的SQLite表,它有超过500,000行,大约有15列(主要是浮点数)。我想要将数据从Django DB传输到SQLite应用程序(它可以由许多关系型数据库支持,但在我的情况下是Postgres )。一切正常,但随着迭代的继续,Python进程的内存使用量每秒会增加2-3兆克。我曾尝试在每次迭代结束时使用'del‘删除EVEMapDenormalize和row对象,但这种膨胀仍在继续。下面是摘录,你有什么想法吗?

代码语言:javascript
运行
复制
class Importer_mapDenormalize(SQLImporter):
def run_importer(self, conn):
    c = conn.cursor()

    for row in c.execute('select * from mapDenormalize'):
        mapdenorm, created = EVEMapDenormalize.objects.get_or_create(id=row['itemID'])
        mapdenorm.x = row['x']
        mapdenorm.y = row['y']
        mapdenorm.z = row['z']

        if row['typeID']:
            mapdenorm.type = EVEInventoryType.objects.get(id=row['typeID'])

        if row['groupID']:
            mapdenorm.group = EVEInventoryGroup.objects.get(id=row['groupID'])

        if row['solarSystemID']:
            mapdenorm.solar_system = EVESolarSystem.objects.get(id=row['solarSystemID'])

        if row['constellationID']:
            mapdenorm.constellation = EVEConstellation.objects.get(id=row['constellationID'])

        if row['regionID']:
            mapdenorm.region = EVERegion.objects.get(id=row['regionID'])

        mapdenorm.save()
    c.close()

我对用Django ORM包装这个SQLite DB一点也不感兴趣。我真的很想弄清楚如何在不占用所有RAM的情况下传输数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-10 23:39:18

我太傻了,这个问题已经在Django FAQ中解决了。

在调试模式下需要清除数据库查询缓存。

代码语言:javascript
运行
复制
from django import db 
db.reset_queries()
票数 3
EN

Stack Overflow用户

发布于 2010-03-10 22:30:31

我认为使用select * from mapDenormalize并将结果加载到内存中总是不好的主意。我的建议是-将脚本分成块。使用LIMIT获取部分数据。

获取第一部分,使用它,靠近光标,然后获取下一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2417572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档