django-settings(2)-database

hwisaac·2023년 8월 31일
0

djnago-setting

목록 보기
2/8

DATABASES

기본값: {} (빈 딕셔너리)

Django와 함께 사용할 모든 데이터베이스 설정을 포함하는 딕셔너리입니다. 이는 개별 데이터베이스의 옵션을 담고 있는 딕셔너리로 이루어진 중첩된 딕셔너리입니다.

DATABASES 설정은 반드시 default 데이터베이스를 구성해야 합니다. 여러 개의 추가 데이터베이스도 지정할 수 있습니다.

가장 간단한 설정 파일은 SQLite를 사용하는 단일 데이터베이스 설정입니다. 다음과 같이 구성할 수 있습니다:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": "mydatabase",
    }
}

MariaDB, MySQL, Oracle 또는 PostgreSQL과 같은 다른 데이터베이스 백엔드에 연결하는 경우 추가 연결 매개변수가 필요합니다. 다음은 PostgreSQL의 예입니다:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "mydatabase",
        "USER": "mydatabaseuser",
        "PASSWORD": "mypassword",
        "HOST": "127.0.0.1",
        "PORT": "5432",
    }
}

더 복잡한 설정을 위해 필요한 다음과 같은 내부 옵션을 사용할 수 있습니다:

ATOMIC_REQUESTS

기본값: False

이 데이터베이스의 각 뷰를 트랜잭션으로 래핑하려면 이 값을 True로 설정합니다. HTTP 요청에 트랜잭션 매핑을 참조하십시오.

AUTOCOMMIT

기본값: True

Django의 트랜잭션 관리를 비활성화하려면 이 값을 False로 설정하고 직접 구현합니다.

ENGINE

기본값: '' (빈 문자열)

사용할 데이터베이스 백엔드입니다. 내장 데이터베이스 백엔드는 다음과 같습니다:

  • 'django.db.backends.postgresql'
  • 'django.db.backends.mysql'
  • 'django.db.backends.sqlite3'
  • 'django.db.backends.oracle'

Django와 함께 제공되지 않는 데이터베이스 백엔드를 사용하려면 ENGINE을 완전한 경로로 설정합니다(즉, mypackage.backends.whatever와 같이).

HOST

기본값: '' (빈 문자열)

데이터베이스에 연결할 때 사용할 호스트입니다. 빈 문자열은 로컬호스트를 나타냅니다. SQLite와는 사용되지 않습니다.

이 값이 슬래시로 시작하면 MySQL을 사용하는 경우 MySQL은 지정된 소켓에 대한 Unix 소켓을 통해 연결합니다. 예를 들어:

"HOST": "/var/run/mysql"

MySQL을 사용하고 이 값이 슬래시로 시작하지 않으면 이 값은 호스트로 간주됩니다.

PostgreSQL을 사용하는 경우 기본적으로 (빈 HOST) 데이터베이스 연결은 UNIX 도메인 소켓을 통해 이루어집니다(pg_hba.conf의 'local' 행). UNIX 도메인 소켓이 표준 위치에 없는 경우 postgresql.conf에서 unix_socket_directory의 동일한 값을 사용하십시오. TCP 소켓을 통해 연결하려면 HOST를 'localhost' 또는 '127.0.0.1'로 설정하십시오(pg_hba.conf의 'host' 행). Windows에서는 언제나 HOST를 정의해야 합니다. UNIX 도메인 소켓을 사용할 수 없습니다.

NAME

기본값: '' (빈 문자열)

사용할 데이터베이스의 이름입니다. SQLite의 경우 데이터베이스 파일의 전체 경로입니다. 경로를 지정할 때 항상 슬래시(/)를 사용하십시오. Windows에서도 슬래시를 사용해야 합니다(예: C:/homes/user/mysite/sqlite3.db).

CONN_MAX_AGE

기본값: 0

데이터베이스 연결의 수명입니다(초 단위 정수). 각 요청의 끝에서 데이터베이스 연결을 닫으

려면 0을 사용합니다(Django의 기본 동작). 무제한 지속적인 데이터베이스 연결을 위해 None을 사용합니다.

CONN_HEALTH_CHECKS

Django 4.1에서 추가됨.

기본값: False

True로 설정하면 기존 지속적인 데이터베이스 연결이 각 요청에서 데이터베이스 접근을 수행하기 전에 건강 상태를 확인합니다. 건강 상태 확인에 실패하면 연결은 더 이상 사용할 수 없지만 데이터베이스 서버가 새 연결을 수락하고 제공할 준비가 되어 있을 때에는 요청을 실패시키지 않고 연결이 다시 설정됩니다(예: 데이터베이스 서버 재시작 후 기존 연결 닫기).

OPTIONS

기본값: {} (빈 딕셔너리)

데이터베이스에 연결할 때 사용할 추가 매개변수입니다. 사용 가능한 매개변수는 데이터베이스 백엔드에 따라 다릅니다.

사용 가능한 매개변수에 대한 일부 정보는 데이터베이스 백엔드 문서에서 찾을 수 있습니다. 더 많은 정보는 백엔드 모듈 자체 문서를 참조하십시오.

PASSWORD

기본값: '' (빈 문자열)

데이터베이스에 연결할 때 사용할 암호입니다. SQLite와는 사용되지 않습니다.

PORT

기본값: '' (빈 문자열)

데이터베이스에 연결할 때 사용할 포트입니다. 빈 문자열은 기본 포트를 나타냅니다. SQLite와는 사용되지 않습니다.

TIME_ZONE

기본값: None

이 데이터베이스 연결의 시간대를 나타내는 문자열이거나 None입니다. 이 내부 옵션은 일반 TIME_ZONE 설정과 동일한 값을 허용합니다.

USE_TZTrue이고 이 옵션이 설정된 경우 데이터베이스에서 날짜/시간을 읽을 때 UTC 대신에 이 시간대의 인식된 날짜/시간이 반환됩니다. USE_TZFalse인 경우 이 옵션을 설정하는 것은 오류입니다.

  • 데이터베이스 백엔드가 시간대를 지원하지 않는 경우(예: SQLite, MySQL, Oracle), Django는 이 옵션이 설정되어 있으면 이 옵션에 따라 로컬 시간으로 날짜/시간을 읽고 씁니다. 이 옵션이 설정되어 있지 않으면 UTC 시간대를 사용합니다.

    연결 시간대를 변경하면 데이터베이스에서 날짜/시간을 읽고 쓰는 방법이 변경됩니다.

    • Django가 데이터베이스를 관리하고 명확한 이유가 없으면 이 옵션을 설정하지 않는 것이 좋습니다. 날짜를 UTC로 저장하는 것이 가장 좋습니다. 이렇게 하면 일광 절약 시간 변경 중 모호하거나 없는 날짜/시간을 피할 수 있습니다. 또한 UTC로 날짜/시간을 받으면 날짜/시간 계산이 간단해집니다. DST 전환을 통한 가능한 오프셋 변경을 고려할 필요가 없습니다.
    • 제3자 데이터베이스에 연결하고 데이터베이스가 UTC가 아닌 로컬 시간으로 날짜/시간을 저장하는 경우 이 옵션을 적절한 시간대로 설정해야 합니다. 또한 Django가 데이터베이스를 관리하지만 제3자 시스템이 동일한 데이터베이스에 연결하고 로컬 시간에 날짜/시간을 기대하는 경우 이 옵션을 설정해야 합니다.
  • 데이터베이스 백엔드가 시간대를 지원하는 경우(예: PostgreSQL), TIME_ZONE 옵션이 매우 드물게 필요할 수 있습니다. 언제든지 변경할 수 있으며 데이터베이스가 원하는 시간대로 날짜/시간을 변환합니다.

    데이터베이스 연결의 시간대를 설정하는 것은 데이터베이스에서 제공하는 date_trunc와 같은 날짜/시간 함수를 사용하는 raw SQL 쿼리를 실행하는 데 유용할 수 있습니다. 결과는 시간대에 따라 달라집니다.

    그러나 이에는 단점이 있습니다: 로컬 시간대의 모든 날짜/시간을 받는 것은 날짜/시간 계산을 더 복잡하게 만듭니다. DST 전환 중에 가능한 오프셋 변경을 고려해야 합니다.

    TIME_ZONE 옵션을

    설정하는 대신 raw SQL 쿼리에서 명시적으로 AT TIME ZONE을 사용하여 명시적으로 로컬 시간으로 변환하는 것을 고려하십시오.

DISABLE_SERVER_SIDE_CURSORS

기본값: False

이 값을 True로 설정하면 QuerySet.iterator()에서 서버 측 커서의 사용을 비활성화합니다. 트랜잭션 풀링과 서버 측 커서에서 해당 사용 사례를 설명합니다.

이는 PostgreSQL에만 해당하는 설정입니다.

USER

기본값: '' (빈 문자열)

데이터베이스에 연결할 때 사용할 사용자 이름입니다. SQLite와는 사용되지 않습니다.

TEST

기본값: {} (빈 딕셔너리)

테스트 데이터베이스에 대한 설정을 담고 있는 딕셔너리입니다. 테스트 데이터베이스의 생성과 사용에 대한 자세한 내용은 테스트 데이터베이스를 참조하십시오.

다음은 테스트 데이터베이스 구성 예입니다:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "USER": "mydatabaseuser",
        "NAME": "mydatabase",
        "TEST": {
            "NAME": "mytestdatabase",
        },
    },
}

TEST 딕셔너리에서 다음 키를 사용할 수 있습니다:

CHARSET

기본값: None

테스트 데이터베이스를 생성할 때 사용하는 문자 집합 인코딩입니다. 이 문자열의 값은 데이터베이스로 직접 전달되므로 형식은 백엔드별입니다.

PostgreSQL (postgresql) 및 MySQL (mysql) 백엔드에서 지원됩니다.

COLLATION

기본값: None

테스트 데이터베이스를 생성할 때 사용할 정렬 순서입니다. 이 값은 백엔드로 직접 전달되므로 형식은 백엔드별입니다.

mysql 백엔드에서만 지원됩니다(자세한 내용은 MySQL 매뉴얼 참조).

DEPENDENCIES

기본값: ['default'] (기본값은 default를 제외한 모든 데이터베이스에 대해), default는 종속성이 없습니다.

데이터베이스의 생성 순서 종속성입니다. 테스트 데이터베이스의 생성 순서 제어 문서에서 자세한 내용을 확인하십시오.

MIGRATE

기본값: True

False로 설정하면 테스트 데이터베이스를 생성할 때 마이그레이션이 실행되지 않습니다. 이는 MIGRATION_MODULESNone 값을 설정하는 것과 유사하지만 모든 앱에 대해 적용됩니다.

MIRROR

기본값: None

이 데이터베이스가 테스트 중에 미러링해야 하는 데이터베이스의 별칭입니다. 이는 트랜잭션에 의존하므로 TestCase 대신 TransactionTestCase 내에서 사용해야 합니다.

이 설정은 여러 데이터베이스의 기본/복제 (일부 데이터베이스에서는 마스터/슬레이브로도 알려짐) 구성을 테스트하기 위해 존재합니다. 기본/복제 구성 테스트 문서에서 자세한 내용을 확인하십시오.

NAME

기본값: None

테스트 스위트를 실행할 때 사용할 데이터베이스의 이름입니다.

SQLite 데이터베이스 엔진과 함께 기본값(None)을 사용하는 경우 테스트는 메모리 내 데이터베이스를 사용합니다. 다른 모든 데이터베이스 엔진에 대해 테스트 데이터베이스는 DATABASE_NAME'test_' + DATABASE_NAME 이름을 사용합니다.

테스트 데이터베이스 문서를 참조하십시오.

SERIALIZE

기본값: True

기본 테스트 러너가 테스트 실행 전에 데이터베이스를 메모리 내 JSON 문자열로 직렬화할지 여부를 제어하는 부울 값입니다(트랜잭션이 없는 경우 테스트 간에 데이터베이스 상태를 복원하는 데 사용됨). 이 값을 False로 설정하여 테스트 클래스에 serialized_rollback=True가 없는 경우 생성 시간을 빠르게 할 수 있습니다.

버전 4.0 이후 더 이상 사용되지 않음: 이 설정은 databases에서 serialized_rollback 옵션이 활성화된 것으로 추론할 수 있기 때문에 더 이상 사용되지 않습니다.

TEMPLATE

이것은 PostgreSQL에만 해당하는 설정입니다.

테스트 데이터베이스를 생성하기 위해 사용할 템플릿의 이름입니다(예: 'template0').

CREATE_DB

기본값: True

이것은 Oracle에만 해당하는 설정입니다.

False로 설정되면 테스트 시작 시 테스트 테이블 스페이스가 자동으로 생성되지 않거나 테스트 종료 시 삭제되지 않습니다.

CREATE_USER

기본값: True

이것은 Oracle에만 해당하는 설정입니다.

False로 설정되면 테스트 시작 시 테스트 사용자가 자동으로 생성되지 않으며 테스트 종료 시 삭제되지 않습니다.

USER[¶](https://docs.djangoproject.com/en/4.2/ref/settings/#std-setting-

TEST_USER)

기본값: None

이것은 Oracle에만 해당하는 설정입니다.

테스트 실행 중에 사용할 Oracle 데이터베이스에 연결할 때 사용할 사용자 이름입니다. 제공되지 않으면 Django는 USER'test_' + USER를 사용합니다.

PASSWORD

기본값: None

이것은 Oracle에만 해당하는 설정입니다.

테스트 실행 중에 사용할 Oracle 데이터베이스에 연결할 때 사용할 암호입니다. 제공되지 않으면 Django가 무작위 암호를 생성합니다.

ORACLE_MANAGED_FILES

기본값: False

이것은 Oracle에만 해당하는 설정입니다.

True로 설정되면 Oracle Managed Files (OMF) 테이블 스페이스가 사용됩니다. DATAFILEDATAFILE_TMP는 무시됩니다.

TBLSPACE

기본값: None

이것은 Oracle에만 해당하는 설정입니다.

테스트 실행 중에 사용할 테이블 스페이스의 이름입니다. 제공되지 않으면 Django는 USER'test_' + USER를 사용합니다.

TBLSPACE_TMP

기본값: None

이것은 Oracle에만 해당하는 설정입니다.

테스트 실행 중에 사용할 임시 테이블 스페이스의 이름입니다. 제공되지 않으면 Django는 USER + '_temp'을 사용합니다.

DATAFILE

기본값: None

이것은 Oracle에만 해당하는 설정입니다.

TBLSPACE에 사용할 데이터 파일의 이름입니다. 제공되지 않으면 Django는 TBLSPACE + '.dbf'를 사용합니다.

DATAFILE_TMP

기본값: None

이것은 Oracle에만 해당하는 설정입니다.

TBLSPACE_TMP에 사용할 데이터 파일의 이름입니다. 제공되지 않으면 Django는 TBLSPACE_TMP + '.dbf'를 사용합니다.

DATAFILE_MAXSIZE

기본값: '500M'

이것은 Oracle에만 해당하는 설정입니다.

DATAFILE이 허용되는 최대 크기입니다.

DATAFILE_TMP_MAXSIZE

기본값: '500M'

이것은 Oracle에만 해당하는 설정입니다.

DATAFILE_TMP가 허용되는 최대 크기입니다.

DATAFILE_SIZE

기본값: '50M'

이것은 Oracle에만 해당하는 설정입니다.

DATAFILE의 초기 크기입니다.

DATAFILE_TMP_SIZE

기본값: '50M'

이것은 Oracle에만 해당하는 설정입니다.

DATAFILE_TMP의 초기 크기입니다.

DATAFILE_EXTSIZE

기본값: '25M'

이것은 Oracle에만 해당하는 설정입니다.

공간이 더 필요할 때 DATAFILE이 확장되는 양입니다.

DATAFILE_TMP_EXTSIZE

기본값: '25M'

이것은 Oracle에만 해당하는 설정입니다.

공간이 더 필요할 때 DATAFILE_TMP가 확장되는 양입니다.

0개의 댓글