把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

相关推荐
三少爷的鞋几秒前
Retrofit 核心流程模拟实现深解析
android
zhimingwen几秒前
使用 adb shell 命令检查手机上 App的APK大小
android·adb
dishugj4 分钟前
[ORACLE-RMAN]rman备份报错ORA-00245解决
数据库·oracle
herinspace4 分钟前
管家婆软件中如何运用商品副单位
运维·服务器·数据库·windows·电脑
泥嚎泥嚎4 分钟前
【Android】RecyclerView 刷新方式全解析:从 notifyDataSetChanged 到 DiffUtil
android·java
用户69371750013845 分钟前
23.Kotlin 继承:继承的细节:覆盖方法与属性
android·后端·kotlin
TDengine (老段)8 分钟前
TDengine 统计函数 VARIANCE 用户手册
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Haha_bj9 分钟前
五、Kotlin——条件控制、循环控制
android·kotlin
弥巷10 分钟前
【Android】深入理解Window和WindowManager
android·java