2014-03-25 60 views
0

這是我的遊標執行代碼。Django遊標不插入/更新查詢

from django.db import connection  
cursor = connection.cursor()  
cursor.execute("Some insert/Update query") 

遊標執行成功,因爲它作爲插入的ID返回輸出。但它沒有在數據庫中顯示插入的值。

我試圖關閉連接但沒有成功。

cursor.close() 
Connection.close() 

如果我試圖使用Connection.commit()但它給出了錯誤。

Exception Type: TransactionManagementError 
Exception Value: This code isn't under transaction management 

我發現了一個令人驚訝的行爲。 如果我使用Connection.commit,那麼它會給出錯誤,但它會成功插入行。 沒有connection.commit它既不會提供錯誤,也不會在數據庫中插入行。

我正在使用MS-SQL服務器作爲使用sqlserver_ado的後端連接。

回答

0

大量的護目鏡終於來到這個解決方案。

在視圖調用之前使用@transaction.commit_manually

有關詳細信息:Commit_Manually

0

你的Django版本應該低於1.6

應提交其手動 使用

django.db.transaction.commit_unless_managed() 

import django 
if not django.get_version().startswith('1.6'): 
    # when version=1.5 not auto-commit, commit here 
    django.db.transaction.commit_unless_managed()