把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

相关推荐
工业甲酰苯胺3 分钟前
分布式系统架构:服务容错
数据库·架构
拭心37 分钟前
Google 提供的 Android 端上大模型组件:MediaPipe LLM 介绍
android
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain1 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship1 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站1 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
带电的小王3 小时前
WhisperKit: Android 端测试 Whisper -- Android手机(Qualcomm GPU)部署音频大模型
android·智能手机·whisper·qualcomm
梦想平凡3 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO3 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql