将Django连接到Microsoft SQL数据库

将Django连接到Microsoft SQL数据库,django,sql-server-2014,pypyodbc,django-pyodbc,django-mssql-backend,Django,Sql Server 2014,Pypyodbc,Django Pyodbc,Django Mssql Backend,我想将django应用程序连接到MS-SQL server 2014数据库。 我写这段代码是为了建立连接 DATABASES = { 'default': { 'ENGINE': 'sql_server.pyodbc', 'HOST':'DESKTOP-6UNRAN0', 'PORT':'1433', 'NAME': 'MOVIE', 'COLLATION' : '', } } 我已经安装了sql_server.pyodbc pip insta

我想将django应用程序连接到MS-SQL server 2014数据库。 我写这段代码是为了建立连接

 DATABASES = {
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'HOST':'DESKTOP-6UNRAN0',
    'PORT':'1433',
    'NAME': 'MOVIE',
    'COLLATION' : '',

  }
}
我已经安装了sql_server.pyodbc

 pip install django-pyodbc-azure
如文件中所述。我仍然在犯错误


django.db.utils.InterfaceError:('IM002','[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序(0)(SQLDriverConnection)

您应该知道,如果要连接到SQL Server,必须使用/安装ODBC,因为它是本机数据访问API

关于文档,让我们看看下面几行

Django Microsoft SQL Server外部数据库后端,通过 使用pyodbc库


符合,以及


选择权

字典。当前可用的密钥为:

司机

绳子

服务器本机客户端11.0、“FreeTDS”等)。默认为“ODBC驱动程序13” 用于SQL Server”


我不再建议使用
django pyodbc azure
,因为作者不再维护它。django中SQL Server的活动PyPI项目目前是
django mssql后端
。但是,它只支持django 2.2及以上版本。我将高度建议升级到django 2.2(长期支持版本),如果不是的话,Django 3.0.2.1将不再受支持,这将为您省去一点工作上的麻烦

第一步:安装Microsoft Linux驱动程序(您也可以使用FreeTDS)

如果要使用Microsoft的驱动程序,可以按如下方式安装:

sudo curlhttps://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/mssql-release.repo
sudo yum删除unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum安装msodbcsql17
第二步:在SQL Server中创建数据库和服务用户

在SQL Server中,为Django数据库设置服务用户。此脚本将创建一个对基础数据库具有最低权限的用户

/*
此脚本创建SQL Server数据库、登录名和用户
具有生产Django项目的适当权限
使用迁移。只需填写以下变量(@db\u name和@db\u password)
默认情况下,用户名将设置为数据库名称+“\u user”。
*/
声明@db_name VARCHAR(MAX)=“项目”
声明@db_password VARCHAR(MAX)=“project_password”
声明@db\u user VARCHAR(MAX)=@db\u name+'\u user'
--
--
使用主机
声明@cmd VARCHAR(最大值)
--服务器作用域:创建SQL Server登录和权限
设置@cmd='CREATE LOGIN'+@db_user+'WITH PASSWORD='''+@db_PASSWORD+'''
EXEC(@cmd)
SET@cmd='将视图服务器状态授予'+@db\u user'
EXEC(@cmd)
SET@cmd='CREATE DATABASE['+@db_name+']
EXEC(@cmd)
--DB范围:为服务器登录和权限创建用户
SET@cmd='使用['+@db_name+'];'
设置@cmd=@cmd+'CREATE USER'++@db_USER++'用于登录'++@db_USER++';'
SET@cmd=@cmd+'将SELECT、INSERT、UPDATE、DELETE、ALTER、CREATE TABLE、REFERENCES、EXEC授予'+@db\U user'
EXEC(@cmd)
第三步:配置Django

最后,让我们将Django本身设置为指向SQL Server。在激活了
venv
的Django项目中:

pip安装django mssql后端

数据库={
“默认值”:{
“引擎”:“sql_server.pyodbc”,
'HOST':'dbserver.your domain.com',
“端口”:“1433”,
“名称”:“项目”,
“用户”:“项目用户”,
“密码”:“项目密码”,
“选项”:{
“驱动程序”:“SQL Server的ODBC驱动程序17”,
“unicode_结果”:True,
},
},
}
如果您使用的是FreeTDS或其他驱动程序,请更改
选项
行,
'driver':'ODBC driver 17 for SQL Server'
。这样就可以了


祝你好运!

你是否安装了odbc驱动程序链接的答案对于此处询问的主题完全错误。这是询问如何连接到SQL Server,一个数据库,而不是如何在连接到PostgreSQL的Windows上运行IIS。这应该重新打开。我已经安装了odbc驱动程序@iklinac。我不明白为什么这个问题重复,lin说k显然没有回答我的问题。您安装了什么版本的驱动程序,有什么平台,python的x64或x86,以及driver@iklinac版本=2.1.0.0(pyodbc azure),我的django版本=2.1.15,我的python版本=3.6.4我现在已经下载并安装了ODBC。问题是当我在数据库连接代码中指定'driver'='ODBC driver 13 for SQL Server'时。我可以创建迁移文件,但当我尝试迁移时(错误:settings.DATABASES配置不正确。请提供引擎值。)。但当我提供引擎值时('ENGINE':'sql_server.pyodbc',),我无法创建迁移文件。即,如果我在数据库代码中同时提供引擎和服务器值,则不会创建迁移文件。感谢您共享您的解决方案。您是否遇到过此错误:
nothing提供msodbcsql17-17.7.2.1-1.x86_64在尝试安装msodbcsql17
yum instal时所需的E2FSPROGl msodbcsql17
?我不确定这是否重要,但我正在一个容器中运行它,其中包含基本映像
registry.access.redhat.com/ubi8/python-38
。感谢您抽出时间