python/Django用于创建填充有00009999的数据库的循环

2024-06-16 14:48:10 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我已经创建了一个视图,用从0000到9999的串行模型填充我的数据库。下面是我用于视图的代码。在

def insert_serials(request):
    for i in range(0,10000):
    serial = Serial(i,False)
    serial.save()
    else:
    print 'The for loop is over'

正确的方法是什么?我得到了一个完整的错误,重复的键,我的模型定义如下:

^{pr2}$

Tags: 代码in模型视图数据库falseforrequest
3条回答

可能存在位置默认参数,请尝试使用关键字:

from django.db import transaction

@transaction.commit_manually
def insert_serials(request):
    for i in range(0,10000):
        serial = Serial(serial=str(i),closed=False)
        serial.save()
    transaction.commit()
    print 'The for loop is over'

它被包装在一个事务中应该会加快一点。 有关详细信息,请参见transaction.commit_manually

您的id字段(由于您的模型中没有PK定义而暗示)没有正确地自动编号,因此第一个字段之后的每次插入都会失败,并返回重复的id值。你的数据库是什么?是您让Django创建了表,还是您自己创建的?在

你的代码在我的站点上运行——MacOSX,Python2.6.3,django from trunk,sqlite3

我改变了你的视图函数代码,不过-

from django.http import HttpResponse
from models import Serial

def insert_serials(request):
    for i in range(0,10000):
        serial = Serial(i,False)
        serial.save()
    return HttpResponse("Serials are inserted")

相关问题 更多 >