programing

운영 환경에서 Sql Server와 Django 사용

css3 2023. 10. 22. 20:20

운영 환경에서 Sql Server와 Django 사용

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

mssql.django-pyodbc와 django-mssql을 비공식적으로 지원하는 백엔드로 알고 있습니다.두 프로젝트 모두 한 명만 참여하는 것으로 보이는데 다소 규칙적인 것 같지만 조금 걱정입니다.

SQL Server에 대해 잘 지원되는 다른 백엔드가 있습니까?제가 여기서 말한 두 가지는 생산하기에 '충분히' 괜찮은가요?당신의 경험은 무엇입니까?

말씀하신 것처럼 장고표는 좋은 방법입니다.PyODBC는 Python용 SQL Server 라이브러리 중 가장 성숙한 것으로 보입니다.

문제가 있을 수 있는 유일한 것은 pyodbc가 저장 프로시저를 잘 지원하지 않는다는 것입니다(전화할 수는 있지만 결과를 얻을 방법은 없습니다).pymssql을 사용하여 호출할 수 있지만 표준 DB-API 인터페이스를 지원하지 않아 변경될 수 있으므로 가능하다면 피하겠습니다.이렇게 해야 한다면 아드바피를 직접 사용하는 것이 최선의 방법입니다(이것은 파이썬 win32 패키지에 포함되어 있으며, 어쨌든 결국 설치하게 될 것입니다).

요즘은

  • django-mssql: "NoneType not callable" 오류가 발생했습니다../manage.py migrate
  • vidal/django-pyodbc: 유지되지 않음.대체 위치:
    • django-pyodbc: python 3 지원 없음
    • django-pyodbc-azure: 지금까지 나를 위해 일했습니다.
      • 편집: 유지되지 않은 것 같습니다.상태를 문의하는 125호 접수
      • 편집: 관리자로부터 답변을 받았습니다.곧 장고 2.0으로 최신 버전을 만들 예정입니다.
      • EDIT: maintainer가 django 2.0용 버전 2.0을 출시했습니다.
      • 편집: 유지 관리자가 장고 2.1용 버전 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 드라이버 "ODBC Driver 17 for SQL Server"를 설치합니다.

# https://learn.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

셋째, 장고의 데이터베이스 항목을 수정합니다.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개월 이상 운영되고 있으며 여러 연결이 동일한 테이블에서 SELECT 쿼리를 수행할 때 MS SQL Server별 데드락 이상의 문제는 발생하지 않았습니다.isolation_level세팅그 시스템은 매일 약 2천명의 새로운 사용자들을 받습니다.

우리 회사에서는 장고-mssql을 생산에 사용하고 있습니다.우리도 mssql을 사용하는 기존 시스템을 가지고 있었습니다.장고를 사용할 수 있게 되어 생산성이 크게 향상되었기 때문에 개인적으로 최고의 디자인 결정이었습니다.

패치를 제출했는데, django-mssql을 사용하기 시작했을 때 1~2주 정도 테스트를 했습니다.그 이후로 (2008년 10월) 우리는 장고에서 시스템을 실행하고 있고 그것은 견고하게 실행됩니다.저도 pyodbc를 해보았지만 별로 좋아하지 않았습니다.

우리는 40명의 헤비 유저들이 이 시스템을 통해 모든 트랜잭션을 실행하는 수리 시스템을 운영하고 있습니다.더 궁금한 것이 있으면 저에게 알려주세요.

설치 후 다음과 같은 오류가 발생하는 것을 본 적이 있습니다.django_mssqlWindows에서:

django.core.exceptions.잘못 구성됨: 'sqlserver_ado'는 사용 가능한 데이터베이스 백엔드가 아닙니다.
django.db.backends를 사용해 보십시오.XXX. 여기서 XXX는 다음 중 하나입니다.'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3'
오류: sqlserver_ado.base라는 모듈이 없습니다.

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

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

아래 공식 마이크로소프트 패키지를 사용하여 SQL 서버를 장고에 연결합니다.

pip install mssql-django

설정

 DATABASES = {
    'default': {
        'ENGINE': 'mssql',
        'NAME': 'mydb',
        'USER': 'user@myserver',
        'PASSWORD': 'password',
        'HOST': 'myserver.database.windows.net',
        'PORT': '',

        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    },
}

# set this to False if you want to turn off pyodbc's connection pooling
DATABASE_CONNECTION_POOLING = False

자세한 정보: https://github.com/microsoft/mssql-django

아직 생산에 사용한 적은 없지만, 장고-mssql에 대한 초기 경험은 꽤 탄탄했습니다.Python Win32 확장 기능과 sqlserver_ado 모듈을 Python 경로로 가져오면 됩니다.거기서부터, 당신은 그냥 사용합니다.sql_server.pyodbc자네와 마찬가지로DATABASE_ENGINE. 아직까지는 빠진 것을 발견하지 못했지만, 아직 완전히 부딪힌 적은 없습니다.

언급URL : https://stackoverflow.com/questions/842831/using-sql-server-with-django-in-production