将 Django 连接到Microsoft SQL 数据库



我想将我的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

如文档 https://pypi.org/project/django-pyodbc-azure/中所述。我仍然收到错误

django.db.utils.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 找不到数据源名称,未指定默认驱动程序 (0( (SQLDriverConnect('(

我不再建议使用django-pyodbc-azure,因为它不再由作者维护。Django 中 SQL Server 的活跃 PyPI 项目目前正在django-mssql-backend。但是,它只支持 Django 2.2 及更高版本。我强烈建议升级到Django 2.2(长期支持版本(,如果不是Django 3.0的话。不再支持 2.1,这将为您省去现在的麻烦。我假设你在Linux上。

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

如果你想使用Microsoft的驱动程序,你可以像这样安装它:

sudo curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install msodbcsql17

步骤 2:在 SQL Server 中创建数据库和服务用户

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

/*
This Script Creates a SQL Server Database, Login and User
With Appropriate Permissions for a Production Django Project
with migrations. Simply fill out the variables below (@db_name and @db_password)
Username will be set to database name + '_user' by default.
*/
DECLARE @db_name VARCHAR(MAX) = 'project'
DECLARE @db_password VARCHAR(MAX) = 'project_password'
DECLARE @db_user VARCHAR(MAX) = @db_name + '_user'
--
--
USE master
DECLARE @cmd VARCHAR(MAX)
-- Server scope: create SQL Server login and permissions
SET @cmd = 'CREATE LOGIN ' + @db_user + ' WITH PASSWORD = ''' + @db_password + ''''
EXEC(@cmd)
SET @cmd = 'GRANT VIEW SERVER STATE TO ' + @db_user
EXEC(@cmd)
SET @cmd = 'CREATE DATABASE [' + @db_name + ']'
EXEC(@cmd)
-- DB scope: create user for server login and permissions
SET @cmd = 'USE [' + @db_name + '];'
SET @cmd = @cmd + 'CREATE USER ' + @db_user + ' FOR LOGIN ' + @db_user + ';'
SET @cmd = @cmd + 'GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE TABLE, REFERENCES, EXEC TO ' + @db_user
EXEC(@cmd)

第三步:配置 Django

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

pip install django-mssql-backend

DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': 'dbserver.your-domain.com',
'PORT': '1433',
'NAME': 'project',
'USER': 'project_user',
'PASSWORD': 'project_password',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'unicode_results': True,
},
},
}

如果您使用的是 FreeTDS 或其他驱动程序,请更改OPTIONS行,'driver': 'ODBC Driver 17 for SQL Server'。这应该可以做到。

祝你好运!

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

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

一个 Django Microsoft SQL Server 外部数据库后端,它使用 ODBC使用 pyodbc 库


兼容 Micosoft ODBC Driver for SQL Server, SQL Server 本机客户端和 FreeTDS ODBC 驱动程序


选项

字典。当前可用的密钥包括:

司机

字符串。

服务器本机客户端 11.0"、"FreeTDS"等(。默认值为"ODBC 驱动程序 13 对于 SQL Server"。

最新更新