首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Django连接到Microsoft数据库

将Django连接到Microsoft数据库
EN

Stack Overflow用户
提问于 2020-05-16 16:56:18
回答 2查看 7.3K关注 0票数 2

我想将django应用程序连接到MS 2014数据库。我编写了这段代码来建立连接。

代码语言:javascript
复制
 DATABASES = {
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'HOST':'DESKTOP-6UNRAN0',
    'PORT':'1433',
    'NAME': 'MOVIE',
    'COLLATION' : '',

  }
}

我安装了sql_server.pyodbc

代码语言:javascript
复制
 pip install django-pyodbc-azure

正如文档https://pypi.org/project/django-pyodbc-azure/中提到的那样。我还在犯错误

django.db.utils.InterfaceError:(‘no 002’,‘未找到IM002ODBC驱动程序管理器数据源名称,也没有指定默认驱动程序(0) (SQLDriverConnect)')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-22 21:47:31

我不再建议使用django-pyodbc-azure,因为它不再由作者维护。Django中用于Server的active PyPI项目目前是django-mssql-backend。然而,它只支持Django 2.2及以上。我强烈建议升级到Djang2.2(长期支持版),如果不是Djang3.0的话。不再支持2.1,这将为您在今后的工作中节省一些头痛。我会假设你在Linux上。

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

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

代码语言:javascript
复制
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

第二步:在Server中创建数据库和服务用户

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

代码语言:javascript
复制
/*
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本身设置为指向Server。在venv激活的Django项目中:

pip install django-mssql-backend

代码语言:javascript
复制
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'。这样就行了。

祝好运!

票数 8
EN

Stack Overflow用户

发布于 2020-05-18 05:00:38

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

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

通过使用pyodbc库使用ODBC的Django Microsoft外部DB后端

兼容一种用于SQL Server的ODBC驱动程序Server本机客户端FreeTDS ODBC驱动程序

选项

字典。目前可用的密钥是:

司机 绳子。 服务器本机客户端11.0","FreeTDS“等)。默认为”13 for Server“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61840428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档