在您的Django应用程序中使用数据库URL。
项目描述
这个简单的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
用法
如果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, )
如果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 |
贡献
我们欢迎对此项目的贡献。项目可以有两种形式
提出问题或通过 github 问题跟踪器帮助他人。
贡献代码。
提出问题或帮助他人
在提交问题或帮助他人时,请记住,您正在与有感情、有工作和自己的生活的人交谈。请友好、善良、礼貌。记住,英语可能不是某些人的第一语言,如果您不理解或某些内容不清晰,请礼貌地重新询问/重新措辞。
贡献代码
在编写代码之前,请务必检查跟踪器中的现有 PR 和问题。
按照 pylint 规范编写代码。
大型或影响广泛的更改需要更长的时间,并且可能比小型受限更改面临更多的审查。
代码应通过 black 和 flake8 验证。
项目详情
dj_database_url-2.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9f9b05058ddf888f1e6f840048b8d705ff9395e3b52a07165daa3d8b9360551b |
|
MD5 | 9c730a72e6ffb53effee4d78e4f97be3 |
|
BLAKE2b-256 | 1a4851f398a47c197f584b3445de886986ddc40de18bdb6e168f325a8d2c7bca |
dj_database_url-2.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3e792567b0aa9a4884860af05fe2aa4968071ad351e033b6db632f97ac6db9de |
|
MD5 | 5f61d3c48304b89b96125059c9444ea6 |
|
BLAKE2b-256 | 6f9a13f173c716d07283661e821f7e1624d0904835151b4f099687455dbef81e |