scn*_*erd 4 python sql-server django
在 Django 中尝试使用dumpdata以下命令时:
python manage.py dumpdata --all --output /data/django_dump.json --verbosity 3
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
CommandError: Unable to serialize database: ('HY000', '[HY000] [Microsoft][ODBC Driver 17 for SQL Server]Connection is busy with results for another command (0) (SQLExecDirectW)')
Exception ignored in: <generator object _cursor_iter at 0x7f1c4112b0c0>
Traceback (most recent call last):
File "/opt/conda/lib/python3.7/site-packages/sql_server/pyodbc/compiler.py", line 133, in _cursor_iter
cursor.close()
File "/opt/conda/lib/python3.7/site-packages/sql_server/pyodbc/base.py", line 500, in close
self.cursor.close()
pyodbc.ProgrammingError: The cursor's connection has been closed.
Run Code Online (Sandbox Code Playgroud)
根据这篇文章的建议,这是我的数据库配置:
DATABASES = {
'default': {
'NAME': ...,
'ENGINE': 'sql_server.pyodbc',
'HOST': ...,
'USER': ...,
'PASSWORD': ...,
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'MARS_Connection': True,
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用 MARS 连接似乎根本没有帮助。是我的配置错误吗?还有其他原因这可能不起作用吗?
Python>=3.6,Django>=2,使用 MS SQL Server(不确定哪个版本,没有太旧的版本)和来自 conda-forge 的 django-pyodbc-azure。
我尝试设置 MARS_Connection 参数,这就是最终起作用的(Django 3.0,django-mssql-backend 2.8.1),即放入'extra_params': 'MARS_Connection=Yes'选项内部:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USER'),
'PASSWORD': os.getenv('DB_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': os.getenv('DB_PORT'),
'TEST': {
'NAME': os.getenv('DB_NAME'),
},
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'extra_params': 'MARS_Connection=Yes'
},
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4009 次 |
| 最近记录: |