我是后端的初学者。试图在我的Windows机器上测试Web服务。
在Linux服务器上,我有一台具有以下数据库设置的工作机器:
DATABASES = {
'default': {
'ENGINE': 'django_pyodbc',
'NAME': 'database_name',
'USER': 'user@server_name',
'PASSWORD': 'pass',
'HOST': 'host',
'PORT': '1433',
'OPTIONS': {
'driver': 'FreeTDS',
}
},
我想在我的Windows PC上本地运行Web服务,然后再向Git提交任何内容。要做到这一点,我使用django-pyodbc-azure 1.0.10,这里提供:
https://github.com/michiya/django-pyodbc-azure/tree/dd87bd3379475ff596210a9243c04c01add0be4d
在我的本地Windows PC上
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'database_name',
'USER': 'user@server_name',
'PASSWORD': 'pass',
'HOST': 'server_name.database.windows.net',
'PORT': '',
'OPTIONS': {
'driver': 'SQL Server Native Client 11.0',
'MARS_Connection': True,
}
},
我相应地更改了设置,但它出现以下错误:
File "C:\Python27\lib\site-packages\sql_server\pyodbc\base.py", line 396, in execute
raise utils.DatabaseError(*e.args)
DatabaseError: ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Error converting data type nvarchar to int. (8114) (SQLExecDirectW)')
我猜它会连接数据库,但会产生转换错误。
我正在使用邮递员使用
发布服务http://127.0.0.1:8000/api/GetFixture
它引发500内部服务器错误。但是这个服务在linux服务器上运行得很好。
答案 0 :(得分:0)
我使用django-pyodbc而不是django-pyodbc-azure,但是,它是一个分叉。我相信你只需要将它添加到Linux方面的选项中:
'OPTIONS': {
'host_is_server': True,
'autocommit': True,
'unicode_results': True,
'extra_params': 'tds_version=8.0'
},
在Windows机器上,请务必包括:
'host_is_server': True,
'autocommit': True,
'unicode_results': True,
另请注意,HOST采用以下形式:
'HOST': 'database.domain.com,1433',
...其中1433是SQL Server正在运行的端口。 Django 1.6+需要自动提交。