문제

SQL Server 데이터베이스 백엔드로 Django 애플리케이션을 배포 한 경험이있는 사람이 있습니까? 우리 직장은 SQL Server에 많은 투자를하고 있으며 충분히 개발 된 백엔드가 없으면 Django를 지원하지 않습니다.

비공식적으로 지원되는 백엔드로서 MSSQL.DJANGO-PYODBC와 DJANGO-MSSQL을 알고 있습니다. 두 프로젝트 모두 한 사람 만 기여하는 것처럼 보이며, 기여는 다소 규칙적 인 것처럼 보이지만 약간 걱정입니다.

잘 지원되는 SQL Server의 다른 백엔드가 있습니까? 내가 여기서 언급 한 두 사람은 생산을 위해 '충분히 양호합니까? 당신의 경험은 무엇입니까?

도움이 되었습니까?

해결책

언급 한 바와 같이, Django-PyoDBC는 좋은 방법입니다. PYODBC는 아마도 Python을위한 가장 성숙한 SQL Server 라이브러리 일 것입니다.

당신이 문제가있을 수있는 유일한 것은 PYODBC가 저장된 절차를 잘 지원하지 않는다는 것입니다 (전화 할 수 있지만 결과를 얻을 수있는 방법은 없습니다). 너 ~할 수 있다 pymssql을 사용하여 호출하지만 표준 DB-API 인터페이스를 지원하지 않고 변경 될 수 있으므로 가능한 경우 피할 수 있습니다. 이 작업을 수행 해야하는 경우 가장 좋은 방법은 사용하는 것입니다. adodbapi 직접 (Python Win32 패키지에 포함되어있을 것입니다. 어쨌든 설치하게 될 것입니다).

다른 팁

요즈음

  • Django-MSSQL: "호출 할 수 없음"오류가 발생했습니다. ./manage.py migrate
  • avidal/django-pyodbc: 인재되지 않은. 로 교체되다:
    • django-pyodbc: 파이썬에 대한 지원 없음 3
    • django-pyodbc-azure: 지금까지 나를 위해 일합니다
      • 편집 : 인재되지 않은 것 같습니다. 줄로 자르는 이슈 125 상태에 대해 묻습니다
      • 편집 : 관리자로부터 답장을 받았습니다. 곧 Django 2.0으로 최신 상태가 될 것입니다
      • 편집 : Django 2.0의 경우 관리자가 버전 2.0을 출시했습니다
      • 편집 : Django 2.1의 경우 Mestommationer 버전 2.1을 출시했습니다

편집 : 패키지 버전은 다음과 같습니다

Django==1.11.6
django-mssql==1.8
pyodbc==4.0.19
django-pyodbc==1.1.1
django-pyodbc-azure==1.11.0.0

이 질문에 대한 "현대"답변이 있습니다. 다른 서버에서 실행되는 MS SQL Server 2017에 연결되는 프로덕션 Ubuntu 16.04 서버에서 Django 1.11을 성공적으로 배포했습니다.

먼저 기본 MS ODBC 드라이버 "SQL Server 용 ODBC 드라이버 17"을 설치하십시오.

# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#ubuntu-1404-1604-and-1710
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql
apt-get install unixodbc-dev

# test you can actually get to port 1433 on the server that is running MS SQL:
nc -z -v -w5 host.where.sql.server.is.running.com 1433

# add /opt/mssql-tools/bin to your PATH in .bash_profile, e.g.:
# PATH="$HOME/bin:$HOME/.local/bin:/opt/mssql-tools/bin:$PATH"
# source ~/.bash_profile
# now, test that you can actually connect to MS SQL Server:
sqlcmd -S host.where.sql.server.is.running.com -U db_username -P db_password

둘째, 당신을 확인하십시오 pip install 이러한 모듈 :

# https://github.com/michiya/django-pyodbc-azure
django-pyodbc-azure==1.11.9.0

# https://github.com/mkleehammer/pyodbc/wiki
pyodbc==4.0.22

셋째, Django의 데이터베이스 항목을 수정하십시오 settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'db_name',
        'USER': 'db_username',
        'PASSWORD': 'db_password',
        'HOST': 'host.where.sql.server.is.running.com',
        'PORT': '1433',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'isolation_level': 'READ UNCOMMITTED',  # prevent SELECT deadlocks
        },
    },
}

나머지 구성 (Nginx, Gunicorn, Django Rest Framework 등)을 생략하고 있지만이 답변의 범위를 벗어납니다.

업데이트 : 이것은 현재 6 개월 이상 생산에서 실행 중이며 여러 연결이 동일한 테이블에서 선택 쿼리를 수행 할 때 MS SQL Server 별 교착 상태 이외의 문제가 없었습니다. isolation_level 환경. 이 시스템은 매일 약 2K 새로운 사용자를 얻습니다.

우리는 회사에서 생산에 django-mssql을 사용하고 있습니다. 우리는 MSSQL을 사용하는 기존 시스템도 가지고있었습니다. 나에게 개인적으로 그것은 내가 Django를 사용할 수 있으므로 생산성이 극적으로 증가했기 때문에 내가 한 최고의 디자인 결정이었습니다.

패치를 제출했지만 Django-MSSQL을 사용하기 시작했을 때 일주일 또는 2 주간의 테스트를 수행했을 때 (2008 년 10 월) 우리는 Django에서 시스템을 실행하고 견고합니다. 나는 또한 pyodbc를 시도했지만 많이 좋아하지 않았다.

우리는 모든 트랜잭션 이이 시스템을 통해 실행되는 수리 시스템을 실행하고 있습니다. 더 많은 질문이 있으면 알려주세요.

설치 후 많은 사람들이 다음과 같은 오류를 얻는 것을 보았습니다. django_mssql Windows :

django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
  'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'
Error was: No module named sqlserver_ado.base

솔루션은 다음 플러그인을 설치하고 있습니다.

http://sourceforge.net/projects/pywin32/

아직 생산에 사용하지는 않았지만 Django-MSSQL에 대한 초기 경험은 매우 견고했습니다. Python Win32 확장 및 SQLServer_ado 모듈을 Python 경로에 가져 오는 것만으로도 필요한 것은 필요합니다. 거기에서 당신은 그냥 사용합니다 sql_server.pyodbc 당신으로 DATABASE_ENGINE. 지금까지 나는 아무것도 없었다는 것을 알지 못했지만 아직 완전히 부딪치지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top