我使用django-pyodbc-azure 2.1.0.0作为与Azure数据库的连接,该数据库运行良好。
当我正确理解django-pyodbc-azure文档时,应该支持事务。
但是,此代码将立即更新行。我想,20秒后行将被更新。
from django.db import transaction
from myapp.models import MyModel
import time
with transaction.atomic():
MyModel.objects.filter(id=1).update(my_field='Test')
time.sleep(20)我做错了什么吗?我需要在Azure SQL数据库上指定某些设置吗?
当我在数据库设置中设置AUTOCOMMIT = False时,下面的代码将根本不更新该行。
MyModel.objects.filter(id=1).update(my_field='Test')
time.sleep(20)
transaction.commit()我现在的settings.py
'azure_reporting': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'reporting_db',
'HOST': 'xxxxxx.database.windows.net',
'PORT': '',
'USER': 'xxxx@xxxxxx.database.windows.net',
'PASSWORD': 'xxxxxx',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server'
}
}发布于 2019-07-24 09:53:45
请确保在数据库设置上设置了AUTOCOMMIT=true:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': 'yourserver.com',
'PORT': '1433',
'NAME': 'your_db',
'USER': 'your_user',
'PASSWORD': 'your_pw',
'AUTOCOMMIT': True,
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}没有发生错误,我们唯一能做的就是重新检查配置 of django-pyodbc-azure。
正如您所说:当我在数据库设置中设置AUTOCOMMIT = False时,下面的代码将根本不更新该行。
我认为交易应该运作良好。
希望这能有所帮助。
https://stackoverflow.com/questions/57178457
复制相似问题