Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 33 additions & 22 deletions ruoyi-fastapi-backend/.env.dev
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,39 @@ JWT_REDIS_EXPIRE_MINUTES = 30


# -------- 数据库配置 --------
# 数据库类型,可选的有'mysql'、'postgresql',默认为'mysql'
DB_TYPE = 'mysql'
# 数据库主机
DB_HOST = '127.0.0.1'
# 数据库端口
DB_PORT = 3306
# 数据库用户名
DB_USERNAME = 'root'
# 数据库密码
DB_PASSWORD = 'mysqlroot'
# 数据库名称
DB_DATABASE = 'ruoyi-fastapi'
# 是否开启sqlalchemy日志
DB_ECHO = true
# 允许溢出连接池大小的最大连接数
DB_MAX_OVERFLOW = 10
# 连接池大小,0表示连接数无限制
DB_POOL_SIZE = 50
# 连接回收时间(单位:秒)
DB_POOL_RECYCLE = 3600
# 连接池中没有线程可用时,最多等待的时间(单位:秒)
DB_POOL_TIMEOUT = 30
# 默认数据源名称
DB_DEFAULT_SOURCE = 'primary'
# 数据源配置(每个节点完整保留数据库连接字段)
# db_type:数据库类型,可选 mysql、postgresql
# db_host:数据库主机地址
# db_port:数据库端口
# db_username:数据库用户名
# db_password:数据库密码
# db_database:数据库名称
# db_echo:是否输出SQLAlchemy SQL日志
# db_connect_timeout:建立数据库连接的超时时间(秒)
# db_max_overflow:连接池允许的最大溢出连接数
# db_pool_size:连接池常驻连接数
# db_pool_recycle:连接回收间隔(秒),-1表示禁用回收
# db_pool_timeout:获取连接的超时时间(秒)
# db_required:启动时连接失败是否阻止应用启动
DB_SOURCES = '{
"primary": {
"db_type": "mysql",
"db_host": "127.0.0.1",
"db_port": 3306,
"db_username": "root",
"db_password": "mysqlroot",
"db_database": "ruoyi-fastapi",
"db_echo": true,
"db_connect_timeout": 10,
"db_max_overflow": 10,
"db_pool_size": 50,
"db_pool_recycle": 3600,
"db_pool_timeout": 30,
"db_required": true
}
}'

# -------- Redis配置 --------
# Redis主机
Expand Down
55 changes: 33 additions & 22 deletions ruoyi-fastapi-backend/.env.dockermy
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,39 @@ JWT_REDIS_EXPIRE_MINUTES = 30


# -------- 数据库配置 --------
# 数据库类型,可选的有'mysql'、'postgresql',默认为'mysql'
DB_TYPE = 'mysql'
# 数据库主机
DB_HOST = 'ruoyi-mysql'
# 数据库端口
DB_PORT = 3306
# 数据库用户名
DB_USERNAME = 'root'
# 数据库密码
DB_PASSWORD = 'root'
# 数据库名称
DB_DATABASE = 'ruoyi-fastapi'
# 是否开启sqlalchemy日志
DB_ECHO = true
# 允许溢出连接池大小的最大连接数
DB_MAX_OVERFLOW = 10
# 连接池大小,0表示连接数无限制
DB_POOL_SIZE = 50
# 连接回收时间(单位:秒)
DB_POOL_RECYCLE = 3600
# 连接池中没有线程可用时,最多等待的时间(单位:秒)
DB_POOL_TIMEOUT = 30
# 默认数据源名称
DB_DEFAULT_SOURCE = 'primary'
# 数据源配置(每个节点完整保留数据库连接字段)
# db_type:数据库类型,可选 mysql、postgresql
# db_host:数据库主机地址
# db_port:数据库端口
# db_username:数据库用户名
# db_password:数据库密码
# db_database:数据库名称
# db_echo:是否输出SQLAlchemy SQL日志
# db_connect_timeout:建立数据库连接的超时时间(秒)
# db_max_overflow:连接池允许的最大溢出连接数
# db_pool_size:连接池常驻连接数
# db_pool_recycle:连接回收间隔(秒),-1表示禁用回收
# db_pool_timeout:获取连接的超时时间(秒)
# db_required:启动时连接失败是否阻止应用启动
DB_SOURCES = '{
"primary": {
"db_type": "mysql",
"db_host": "ruoyi-mysql",
"db_port": 3306,
"db_username": "root",
"db_password": "root",
"db_database": "ruoyi-fastapi",
"db_echo": true,
"db_connect_timeout": 10,
"db_max_overflow": 10,
"db_pool_size": 50,
"db_pool_recycle": 3600,
"db_pool_timeout": 30,
"db_required": true
}
}'

# -------- Redis配置 --------
# Redis主机
Expand Down
55 changes: 33 additions & 22 deletions ruoyi-fastapi-backend/.env.dockerpg
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,39 @@ JWT_REDIS_EXPIRE_MINUTES = 30


# -------- 数据库配置 --------
# 数据库类型,可选的有'mysql'、'postgresql',默认为'mysql'
DB_TYPE = 'postgresql'
# 数据库主机
DB_HOST = 'ruoyi-pg'
# 数据库端口
DB_PORT = 5432
# 数据库用户名
DB_USERNAME = 'postgres'
# 数据库密码
DB_PASSWORD = 'root'
# 数据库名称
DB_DATABASE = 'ruoyi-fastapi'
# 是否开启sqlalchemy日志
DB_ECHO = true
# 允许溢出连接池大小的最大连接数
DB_MAX_OVERFLOW = 10
# 连接池大小,0表示连接数无限制
DB_POOL_SIZE = 50
# 连接回收时间(单位:秒)
DB_POOL_RECYCLE = 3600
# 连接池中没有线程可用时,最多等待的时间(单位:秒)
DB_POOL_TIMEOUT = 30
# 默认数据源名称
DB_DEFAULT_SOURCE = 'primary'
# 数据源配置(每个节点完整保留数据库连接字段)
# db_type:数据库类型,可选 mysql、postgresql
# db_host:数据库主机地址
# db_port:数据库端口
# db_username:数据库用户名
# db_password:数据库密码
# db_database:数据库名称
# db_echo:是否输出SQLAlchemy SQL日志
# db_connect_timeout:建立数据库连接的超时时间(秒)
# db_max_overflow:连接池允许的最大溢出连接数
# db_pool_size:连接池常驻连接数
# db_pool_recycle:连接回收间隔(秒),-1表示禁用回收
# db_pool_timeout:获取连接的超时时间(秒)
# db_required:启动时连接失败是否阻止应用启动
DB_SOURCES = '{
"primary": {
"db_type": "postgresql",
"db_host": "ruoyi-pg",
"db_port": 5432,
"db_username": "postgres",
"db_password": "root",
"db_database": "ruoyi-fastapi",
"db_echo": true,
"db_connect_timeout": 10,
"db_max_overflow": 10,
"db_pool_size": 50,
"db_pool_recycle": 3600,
"db_pool_timeout": 30,
"db_required": true
}
}'

# -------- Redis配置 --------
# Redis主机
Expand Down
55 changes: 33 additions & 22 deletions ruoyi-fastapi-backend/.env.prod
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,39 @@ JWT_REDIS_EXPIRE_MINUTES = 30


# -------- 数据库配置 --------
# 数据库类型,可选的有'mysql'、'postgresql',默认为'mysql'
DB_TYPE = 'mysql'
# 数据库主机
DB_HOST = '127.0.0.1'
# 数据库端口
DB_PORT = 3306
# 数据库用户名
DB_USERNAME = 'root'
# 数据库密码
DB_PASSWORD = 'root'
# 数据库名称
DB_DATABASE = 'ruoyi-fastapi'
# 是否开启sqlalchemy日志
DB_ECHO = true
# 允许溢出连接池大小的最大连接数
DB_MAX_OVERFLOW = 10
# 连接池大小,0表示连接数无限制
DB_POOL_SIZE = 50
# 连接回收时间(单位:秒)
DB_POOL_RECYCLE = 3600
# 连接池中没有线程可用时,最多等待的时间(单位:秒)
DB_POOL_TIMEOUT = 30
# 默认数据源名称
DB_DEFAULT_SOURCE = 'primary'
# 数据源配置(每个节点完整保留数据库连接字段)
# db_type:数据库类型,可选 mysql、postgresql
# db_host:数据库主机地址
# db_port:数据库端口
# db_username:数据库用户名
# db_password:数据库密码
# db_database:数据库名称
# db_echo:是否输出SQLAlchemy SQL日志
# db_connect_timeout:建立数据库连接的超时时间(秒)
# db_max_overflow:连接池允许的最大溢出连接数
# db_pool_size:连接池常驻连接数
# db_pool_recycle:连接回收间隔(秒),-1表示禁用回收
# db_pool_timeout:获取连接的超时时间(秒)
# db_required:启动时连接失败是否阻止应用启动
DB_SOURCES = '{
"primary": {
"db_type": "mysql",
"db_host": "127.0.0.1",
"db_port": 3306,
"db_username": "root",
"db_password": "root",
"db_database": "ruoyi-fastapi",
"db_echo": true,
"db_connect_timeout": 10,
"db_max_overflow": 10,
"db_pool_size": 50,
"db_pool_recycle": 3600,
"db_pool_timeout": 30,
"db_required": true
}
}'

# -------- Redis配置 --------
# Redis主机
Expand Down
28 changes: 18 additions & 10 deletions ruoyi-fastapi-backend/alembic/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@
from alembic import context
from alembic.migration import MigrationContext
from alembic.operations.ops import MigrationScript
from sqlalchemy import pool
from sqlalchemy.engine import Connection
from sqlalchemy.ext.asyncio import async_engine_from_config

from config.database import ASYNC_SQLALCHEMY_DATABASE_URL, Base
from config.database import Base, DataSourceRegistry, build_async_sqlalchemy_database_url
from config.env import DataBaseConfig
from utils.import_util import ImportUtil

# 判断vesrions目录是否存在,如果不存在则创建
Expand All @@ -35,7 +34,20 @@
# add your model's MetaData object here
# for 'autogenerate' support
target_metadata = Base.metadata
# ASYNC_SQLALCHEMY_DATABASE_URL = 'mysql+asyncmy://root:mysqlroot@127.0.0.1:3306/ruoyi-fastapi'


def _default_source_url() -> str:
"""
构建默认数据源的Alembic数据库连接URL

:return: Alembic数据库连接URL
"""
database_url = build_async_sqlalchemy_database_url(DataBaseConfig.default_source)
return database_url.render_as_string(hide_password=False).replace('%', '%%')


ASYNC_SQLALCHEMY_DATABASE_URL = _default_source_url()

# other values from the config, defined by the needs of env.py,
alembic_config.set_main_option('sqlalchemy.url', ASYNC_SQLALCHEMY_DATABASE_URL)

Expand Down Expand Up @@ -111,16 +123,12 @@ async def run_async_migrations() -> None:

"""

connectable = async_engine_from_config(
alembic_config.get_section(alembic_config.config_ini_section, {}),
prefix='sqlalchemy.',
poolclass=pool.NullPool,
)
connectable = DataSourceRegistry.get_async_engine(DataBaseConfig.db_default_source)

async with connectable.connect() as connection:
await connection.run_sync(do_run_migrations)

await connectable.dispose()
await DataSourceRegistry.dispose_all()


def run_migrations_online() -> None:
Expand Down
8 changes: 4 additions & 4 deletions ruoyi-fastapi-backend/cli/core/context_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def suppress_sqlalchemy_logs(self) -> None:

该逻辑同时处理两类来源:

1. 将 `config.env.DataBaseConfig.db_echo` 强制关闭,避免后续新建 Engine 时
1. 将 `config.env.DataBaseConfig.db_sources` 中全部数据源的 `db_echo` 强制关闭,避免后续新建 Engine 时
继续打开 SQLAlchemy echo。
2. 将已知 SQLAlchemy logger 级别提升到 WARNING,避免已有 logger 配置把
`INFO sqlalchemy.engine.Engine ...` 继续打到标准输出。
Expand All @@ -59,9 +59,9 @@ def suppress_sqlalchemy_logs(self) -> None:
if self.sqlalchemy_logs_suppressed:
return
env_module = import_module('config.env')
database_config = getattr(env_module, 'DataBaseConfig', None)
if database_config is not None and hasattr(database_config, 'db_echo'):
database_config.db_echo = False
database_config = env_module.DataBaseConfig
for source_config in database_config.db_sources.values():
source_config.db_echo = False
for logger_name in (
'sqlalchemy',
'sqlalchemy.engine',
Expand Down
2 changes: 1 addition & 1 deletion ruoyi-fastapi-backend/cli/runtime/app/support.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def build_app_config_snapshot(self) -> dict[str, Any]:
"""
env_module = self.infrastructure_gateway.get_env_module()
app_config = env_module.AppConfig
database_config = env_module.DataBaseConfig
database_config = env_module.DataBaseConfig.default_source
log_config = env_module.LogConfig
redis_config = env_module.RedisConfig
transport_crypto_config = env_module.TransportCryptoConfig
Expand Down
2 changes: 1 addition & 1 deletion ruoyi-fastapi-backend/cli/runtime/config/gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def get_async_session_local() -> Any:

:return: 异步数据库会话工厂
"""
return import_module('config.database').AsyncSessionLocal
return import_module('config.database').DataSourceRegistry.session

@staticmethod
def get_redis_util() -> Any:
Expand Down
4 changes: 2 additions & 2 deletions ruoyi-fastapi-backend/cli/runtime/gen/gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def get_async_session_local() -> Any:

:return: 异步数据库会话工厂
"""
return import_module('config.database').AsyncSessionLocal
return import_module('config.database').DataSourceRegistry.session

@staticmethod
def get_page_model() -> Any:
Expand All @@ -53,7 +53,7 @@ def get_database_config() -> Any:

:return: 数据库配置对象
"""
return import_module('config.env').DataBaseConfig
return import_module('config.env').DataBaseConfig.default_source

@staticmethod
def get_gen_config() -> Any:
Expand Down
2 changes: 1 addition & 1 deletion ruoyi-fastapi-backend/cli/runtime/job/gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def get_async_session_local() -> Any:

:return: 异步数据库会话工厂
"""
return import_module('config.database').AsyncSessionLocal
return import_module('config.database').DataSourceRegistry.session

@staticmethod
def get_redis_util() -> Any:
Expand Down
12 changes: 0 additions & 12 deletions ruoyi-fastapi-backend/common/aspect/db_seesion.py

This file was deleted.

Loading
Loading