把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

相关推荐
赵渝强老师5 分钟前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
砖厂小工4 小时前
用 GLM + OpenClaw 打造你的 AI PR Review Agent — 让龙虾帮你审代码
android·github
全栈老石4 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
张拭心5 小时前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能
张拭心5 小时前
Android 17 来了!新特性介绍与适配建议
android·前端
Kapaseker7 小时前
Compose 进阶—巧用 GraphicsLayer
android·kotlin
黄林晴7 小时前
Android17 为什么重写 MessageQueue
android
倔强的石头_1 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin