在Windows上为远程mssql db运行django迁移,使用本机Windows数据库驱动程序

时间:2015-11-18 08:40:46

标签: python sql-server django azure

我一生都试图避免使用微软技术进行开发,但也许是对我过去最大的罪恶的惩罚,我现在不得不使用它们。

我在python 2.7上开发一个django应用程序,作为web应用程序部署在azure上。我需要运行migrate来创建初始数据库。我必须在我正在开发的机器上执行此操作,这是一台Windows 7笔记本电脑。达到目的;这是我的数据库设置:

DATABASES = {
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'mydbname',
    'USER': 'mydbuser',
    'PASSWORD': 'mypass',
    'HOST': 'mydbinstance.database.windows.net',
    'PORT': '1433',
    'OPTIONS': {
        'driver': 'SQL Server Native Client 11.0',
        'MARS_Connection': 'True',
    }
  }
}

当我将应用程序部署到azure时,应用程序可以使用此配置连接到数据库。所以我想我需要能够以完全相同的配置连接到数据库。我已经安装了pyodbc,django-pyodbc-azure模块,并安装了SQL Server Native Client 11.0 ODBC驱动程序。但是当我跑步时

python manage.py migrate

我收到以下错误消息:

django.db.utils.Error: ('IM002', [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0)) (SQLDriverConnect)')

通常我会先说这可能是我的django设置有问题,但我可以确认azure上的应用程序可以使用相同的配置连接到同一个db,所以我认为这是我本地的一个问题组态。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:2)

我似乎需要在本地计算机上的“管理服务”的“数据源”选项卡下创建一个dsn。使用SQL Server Native Client 11.0创建dsn解决了连接问题。