如何使用postgres后端在django中更快地进行记录插入操作

时间:2011-08-18 12:32:15

标签: django performance postgresql

我构建了一个基于django的地理定位服务,该服务通过IP地址确定用户的位置。我需要做的第一件事是将ip数据插入我的数据库。

我使用以下代码(简化)将记录插入我的数据库:

 for ipLoc in ipSeeker.ipLocationList:
     placeName =ipLoc.country + ipLoc.area
     IPLog.objects.create(
                startIP = int_to_dqn(ipLoc.startIP), 
                endIP = int_to_dqn(ipLoc.endIP), 
                place = placeName
     ).save()

ipLocationList有大约400k的ip记录。我的脚本只在20分钟内插入20k记录。它太慢了,无法接受。

所以我的问题是:瓶颈在哪里?我怎样才能让它更快?

提前致谢!

2 个答案:

答案 0 :(得分:1)

使用django-side的原始sql和事务:https://docs.djangoproject.com/en/dev/topics/db/sql/以及Postgres的Copy命令!

Whats the fastest way to do a bulk insert into Postgres?

答案 1 :(得分:1)

我找到了一个关于如何在siafu中将GEOIP数据库加载到postgresQL的完整教程。它编写得很好,涵盖了大部分细节。 链接为http://www.siafoo.net/article/53