我想将django应用程序连接到MS 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:(‘no 002’,‘未找到IM002ODBC驱动程序管理器数据源名称,也没有指定默认驱动程序(0) (SQLDriverConnect)')
发布于 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的驱动程序,可以按以下方式安装:
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数据库设置一个服务用户。此脚本将创建具有底层数据库所需最低权限的用户。
/*
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
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'。这样就行了。
祝好运!
发布于 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“。
https://stackoverflow.com/questions/61840428
复制相似问题