把Django字典格式的数据库配置转成tortoise-orm的URL格式

Django版的数据库配置如下:

python 复制代码
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "test_1",
        "USER": "root",
        "PASSWORD": "123456",
        "HOST": "localhost",
        "PORT": "3306",
    }
}

参考tortoise-orm的文档转换后如下:

mysql://root:123456@localhost:3306/test_1

注:如果密码里含有特殊字符,需要使用标准库urllib.parse.quote_plus进行转义

也可以使用tortoise-database-url进行自动转换,用法如下:

  1. 安装
bash 复制代码
pip install tortoise-database-url
  1. 在命令行中使用
bash 复制代码
python -c "
import database_url
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_1',
        'USER': 'root',
        'PASSWORD': '123456@2024',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
print(database_url.from_django_item(DATABASES['default']))
"
# mysql://root:123456%402024@localhost:3306/test_1
  1. 代码中使用
python 复制代码
import os

import database_url  # pip install tortoise-database-url


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_1',
        'USER': os.getenv('DB_USER', 'root'),
        'PASSWORD': os.getenv('DB_PASS', '123456'),
        'HOST': os.getenv('DB_HOST', 'localhost'),
        'PORT': os.getenv('DB_PORT', '3306'),
    }
}
DB_URL = database_url.from_django_item(DATABASES['default'])
TORTOISE_ORM = {
    'connections': {'default': DB_URL},
    'apps': {
        'models': {
            'models': ['app.models', 'aerich.models'],
            'default_connection': 'default',
        },
    },
}

更多用例见:https://github.com/waketzheng/database-url/blob/main/tests/test_main.py

相关推荐
2603_9651481115 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl15 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu16 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT17 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData17 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean17 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean17 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X18 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.18 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠18 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle