把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

相关推荐
ameyume几秒前
基于原生Android 16设置音量调用流程
android·audio
ii_best几秒前
lua语言开发脚本基础、mql命令库开发、安卓/ios基础开发教程,按键精灵新手工具
android·ios·自动化·编辑器
不会写DN1 分钟前
SQL 数据定义(DDL)全解
数据库·sql
linux修理工3 分钟前
飞书机器人权限批量导入
服务器·数据库·asp.net
用户6279947182626 分钟前
南大通用GBase 8a之基于散列点集合获取最小覆盖圆的方法
数据库
有想法的py工程师10 分钟前
PostgreSQL 性能优化实战:一条 Order by 的 SQL 从 5 秒优化到 100ms
大数据·数据库·postgresql·性能优化
captain37615 分钟前
数据库设计
数据库
XDHCOM1 天前
ORA-32484重复列名错误,ORACLE数据库CYCLE子句故障修复与远程处理方案
数据库·oracle
翻斗包菜1 天前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
呆瑜nuage1 天前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql