gpt4 book ai didi

python - django.db.utils.DatabaseError

转载 作者:太空狗 更新时间:2023-10-30 00:27:06 33 4
gpt4 key购买 nike

我正在设置一个 Django 模型来存储地区,例如美国、德国等。我为表格设置了唯一的地区名称。我有一个从列表中填充数据库的脚本,如果有重复的区域名称 IntegrityError 将按预期抛出,但随后会发生另一个错误,我无法从错误消息中判断原因。有任何想法吗?谢谢!

django.db.utils.DatabaseError: current transaction is aborted, commands ignored until end of transaction block

型号:

class Region(models.Model):
name = models.CharField(max_length=512, unique=True)

def __unicode__(self):
return self.name

填充代码:

    try:
Region(name=server['locale']).save()
print 'Added region: %(locale)s' % server
except IntegrityError:
pass

我已经确认 IntegrityError 正在发生,但随后我收到了我不期望的错误:

  File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/models/base.py", line 456, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/models/base.py", line 549, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/models/manager.py", line 195, in _insert
return insert_query(self.model, values, **kwargs)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/models/query.py", line 1518, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/models/sql/compiler.py", line 788, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/models/sql/compiler.py", line 732, in execute_sql
cursor.execute(sql, params)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/backends/util.py", line 15, in execute
return self.cursor.execute(sql, params)
File "/home/daedalus/webapps/wowstatus/lib/python2.6/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
return self.cursor.execute(query, args)
django.db.utils.DatabaseError: current transaction is aborted, commands ignored until end of transaction block

最佳答案

如果出现问题,你应该重置你的数据库状态例如:

from django.db import transaction

@transaction.commit_manually
def Populate():
try:
Region(name=server['locale']).save()
print 'Added region: %(locale)s' % server
except IntegrityError:
transaction.rollback()
else:
transaction.commit()

关于python - django.db.utils.DatabaseError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532880/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com