1

我使用django-pyodbc-azure2.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'
    }
}
4

1 回答 1

0

请确保您已设置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',

        },
    },
}

没有发生错误,我们唯一能做的就是重新django-pyodbc-azure检查.

正如您所说:当我在数据库设置中设置 AUTOCOMMIT = False 时,以下代码根本不会更新该行。

我认为交易应该运作良好。

希望这可以帮助。

于 2019-07-24T09:53:45.603 回答