Я больше не рекомендую использовать django-pyodbc-azure
, так как он больше не поддерживается автором. Активным проектом PyPI для SQL Server в Django в настоящее время является django-mssql-backend
. Однако он поддерживает только Django 2.2 и выше. Я настоятельно рекомендую выполнить обновление до Django 2.2 (выпуск с долгосрочной поддержкой), если не до Django 3.0. 2.1 больше не поддерживается, и теперь это избавит вас от головной боли, так как придется немного поработать. Я предполагаю, что вы используете Linux.
Шаг первый: установите драйвер Microsoft для 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
Шаг 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)
Шаг 3. Настройте Django
Наконец, давайте настроим сам Django, чтобы он указывал на SQL Server. В вашем проекте Django с активированным venv
:
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'
. Это должно сработать.
Удачи!
person
FlipperPA
schedule
22.05.2020