【发布时间】:2019-07-24 08:26:06
【问题描述】:
我使用django-pyodbc-azure 2.1.0.0 与运行良好的 Azure SQL 数据库进行连接。
当我正确理解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'
}
}
【问题讨论】:
-
没有错误信息?
-
不幸的是,Python shell 中根本没有输出
-
您是否将 AUTOCOMMIT 设置为 true?
-
@LeoYue - 非常感谢您的帮助!在我的设置中,我根本没有设置 AUTOCOMMIT——默认值应该是
True。但是,我只是尝试在我的设置中将其设置为False。我编辑了问题,以便您可以看到我进一步采取的措施。 -
如果你设置
AUTOCOMMIT = False并且代码不会更新行,我认为事务运行良好。
标签: django azure-sql-database django-pyodbc-azure