跳转到主要内容

在您的Django应用程序中使用数据库URL。

项目描述

Jazzband https://github.com/jazzband/dj-database-url/actions/workflows/test.yml/badge.svg https://codecov.io/gh/jazzband/dj-database-url/branch/master/graph/badge.svg?token=7srBUpszOa

这个简单的Django实用程序允许您使用受12factor启发的DATABASE_URL环境变量来配置您的Django应用程序。

dj_database_url.config方法返回一个Django数据库连接字典,其中包含您在URL中指定的所有数据。还有一个conn_max_age参数,可以轻松启用Django的连接池。

如果您不想使用环境变量,可以直接向dj_database_url.parse传递一个URL。

支持的数据库

目前支持PostgreSQL、PostGIS、MySQL、MySQL (GIS)、Oracle、Oracle (GIS)、Redshift、CockroachDB、Timescale、Timescale (GIS)和SQLite。

安装

安装很简单

$ pip install dj-database-url

用法

  1. 如果DATABASES已经定义

  • settings.py中从DATABASE_URL配置数据库

    import dj_database_url
    
    DATABASES['default'] = dj_database_url.config(
        conn_max_age=600,
        conn_health_checks=True,
    )
  • 提供默认值

    DATABASES['default'] = dj_database_url.config(
        default='postgres://...',
        conn_max_age=600,
        conn_health_checks=True,
    )
  • 解析任意数据库URL

    DATABASES['default'] = dj_database_url.parse(
        'postgres://...',
        conn_max_age=600,
        conn_health_checks=True,
    )
  1. 如果DATABASES未定义

  • settings.py中从DATABASE_URL配置数据库

    import dj_database_url
    
    DATABASES = {
        'default': dj_database_url.config(
            conn_max_age=600,
            conn_health_checks=True,
        ),
    }
  • 您可以提供一个默认值,如果DATABASE_URL设置未定义,则使用该默认值

    DATABASES = {
        'default': dj_database_url.config(
            default='postgres://...',
            conn_max_age=600,
            conn_health_checks=True,
        )
    }
  • 解析任意数据库URL

    DATABASES = {
        'default': dj_database_url.parse(
            'postgres://...',
            conn_max_age=600,
            conn_health_checks=True,
        )
    }

conn_max_age 设置 CONN_MAX_AGE 配置,该配置告诉 Django 在请求之间持久化数据库连接,最多保持指定秒数。如果您不提供值,它将遵循 Django 的默认值 0。为了性能考虑,建议设置该值。

conn_health_checks 设置 CONN_HEALTH_CHECKS 配置(自 Django 4.1 以来新增),该配置告诉 Django 在每个请求开始时检查持久化的连接是否仍然有效。如果您不提供值,它将遵循 Django 的默认值 False。如果您设置了非零的 conn_max_age,则建议启用此功能。

传递给 dj_database_url 的字符串必须是有效的 URL;特别是,特殊字符必须进行 URL 编码。以下 URL 将引发一个 ValueError

postgres://user:p#ssword!@localhost/foobar

应该改为以下方式传递

postgres://user:p%23ssword!@localhost/foobar

TEST 配置可以使用 test_options 属性进行配置

DATABASES['default'] = dj_database_url.config(default='postgres://...', test_options={'NAME': 'mytestdatabase'})

URL 架构

引擎

Django 后端

URL

PostgreSQL

django.db.backends.postgresql [1]

postgres://USER:PASSWORD@HOST:PORT/NAME [2] postgresql://USER:PASSWORD@HOST:PORT/NAME

PostGIS

django.contrib.gis.db.backends.postgis

postgis://USER:PASSWORD@HOST:PORT/NAME

MSSQL

sql_server.pyodbc

mssql://USER:PASSWORD@HOST:PORT/NAME

MSSQL [5]

mssql

mssqlms://USER:PASSWORD@HOST:PORT/NAME

MySQL

django.db.backends.mysql

mysql://USER:PASSWORD@HOST:PORT/NAME [2]

MySQL (GIS)

django.contrib.gis.db.backends.mysql

mysqlgis://USER:PASSWORD@HOST:PORT/NAME

SQLite

django.db.backends.sqlite3

sqlite:///PATH [3]

SpatiaLite

django.contrib.gis.db.backends.spatialite

spatialite:///PATH [3]

Oracle

django.db.backends.oracle

oracle://USER:PASSWORD@HOST:PORT/NAME [4]

Oracle (GIS)

django.contrib.gis.db.backends.oracle

oraclegis://USER:PASSWORD@HOST:PORT/NAME

Redshift

django_redshift_backend

redshift://USER:PASSWORD@HOST:PORT/NAME

CockroachDB

django_cockroachdb

cockroach://USER:PASSWORD@HOST:PORT/NAME

Timescale [6]

timescale.db.backends.postgresql

timescale://USER:PASSWORD@HOST:PORT/NAME

Timescale (GIS) [6]

timescale.db.backend.postgis

timescalegis://USER:PASSWORD@HOST:PORT/NAME

贡献

我们欢迎对此项目的贡献。项目可以有两种形式

  1. 提出问题或通过 github 问题跟踪器帮助他人。

  2. 贡献代码。

提出问题或帮助他人

在提交问题或帮助他人时,请记住,您正在与有感情、有工作和自己的生活的人交谈。请友好、善良、礼貌。记住,英语可能不是某些人的第一语言,如果您不理解或某些内容不清晰,请礼貌地重新询问/重新措辞。

贡献代码

  • 在编写代码之前,请务必检查跟踪器中的现有 PR 和问题。

  • 按照 pylint 规范编写代码。

  • 大型或影响广泛的更改需要更长的时间,并且可能比小型受限更改面临更多的审查。

  • 代码应通过 blackflake8 验证。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分布

dj_database_url-2.2.0.tar.gz (10.9 kB 查看哈希值)

上传时间

构建分布

dj_database_url-2.2.0-py3-none-any.whl (7.8 kB 查看哈希值)

上传时间 Python 3

支持