我有一個Celery任務在我的Django應用程序中調用函數來處理CSV文件中的每一行,並嘗試使用模型將每行的信息插入到PostgreSQL數據庫中,如下所示:Django DatabaseError - 沒有這樣的保存點
reader = csv.DictReader(csvfile, dialect=csv.get_dialect('excel'))
for row_number, row in enumerate(reader):
try:
...
customer, created = Customer.objects.get_or_create(
first_name = row['First Name'],
last_name = row['Last Name'],
email = row['Email'],
account_owner = account_owner
)
...
except Exception, e:
message = "%s: %s\n" % (type(e).__name__, e)
sys.stderr.write("%s\n" % message)
我在循環的第一次迭代得到以下錯誤在Customer.objects.get_or_create
: DatabaseError: no such savepoint
然後我讓其後爲DatabaseError: current transaction is aborted, commands ignored until end of transaction block
每次迭代。
我已經用腳本提供的相同信息成功插入(手動使用SQL)記錄到此表中。我也試圖與保存點工作,沒有運氣:
sid = transaction.savepoint()
customer, created = Customer.objects.get_or_create(
first_name = row['First Name'],
last_name = row['Last Name'],
email = row['Email'],
account_owner = account_owner
)
transaction.savepoint_commit(sid)
這是我的開發機器上發生的情況與家釀安裝的PostgreSQL 9.1。顯然,主要目標是解決這個問題,但任何有用的指針調試Celery任務或定位我的Postgres日誌文件也將有所幫助。
嗨,你可以粘貼你的Customer.objects.get_or_create()方法嗎? – PepperoniPizza
這只是內置的[Django方法](https://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create) – Gady