modify scripts
This commit is contained in:
@ -56,6 +56,15 @@ from sqlalchemy import create_engine
|
|||||||
from models.resources import ResourceBase
|
from models.resources import ResourceBase
|
||||||
target_metadata = ResourceBase.metadata # 关联 MySQL 模型的元数据
|
target_metadata = ResourceBase.metadata # 关联 MySQL 模型的元数据
|
||||||
|
|
||||||
|
def get_mysql_url():
|
||||||
|
evn = os.environ.get('DB_ENV', 'dev')
|
||||||
|
if evn.lower() == 'dev':
|
||||||
|
return "mysql+pymysql://root:mysqlpw@testdb:3306/resources"
|
||||||
|
elif evn.lower() == 'nas':
|
||||||
|
return "mysql+pymysql://root:root@mariadb:3306/resources"
|
||||||
|
else:
|
||||||
|
return "mysql+pymysql://root:mysqlpw@testdb:3306/resources"
|
||||||
|
|
||||||
def run_migrations_online() -> None:
|
def run_migrations_online() -> None:
|
||||||
"""Run migrations in 'online' mode.
|
"""Run migrations in 'online' mode.
|
||||||
|
|
||||||
@ -67,7 +76,7 @@ def run_migrations_online() -> None:
|
|||||||
#ini_section = config.get_section_option(config.config_ini_section, "ini_section", fallback="dev")
|
#ini_section = config.get_section_option(config.config_ini_section, "ini_section", fallback="dev")
|
||||||
#url = config.get_section_option(ini_section, "sqlalchemy.url")
|
#url = config.get_section_option(ini_section, "sqlalchemy.url")
|
||||||
#connectable = create_engine(url)
|
#connectable = create_engine(url)
|
||||||
url = "mysql+pymysql://root:mysqlpw@testdb:3306/resources"
|
url = get_mysql_url()
|
||||||
connectable = create_engine(url)
|
connectable = create_engine(url)
|
||||||
|
|
||||||
with connectable.connect() as connection:
|
with connectable.connect() as connection:
|
||||||
|
|||||||
@ -16,6 +16,15 @@ from sqlalchemy.exc import SQLAlchemyError
|
|||||||
# 注册器字典
|
# 注册器字典
|
||||||
mysql_handler_registry = {}
|
mysql_handler_registry = {}
|
||||||
|
|
||||||
|
def get_mysql_url():
|
||||||
|
evn = os.environ.get('DB_ENV', 'dev')
|
||||||
|
if evn.lower() == 'dev':
|
||||||
|
return "mysql+pymysql://root:mysqlpw@testdb:3306/resources"
|
||||||
|
elif evn.lower() == 'nas':
|
||||||
|
return "mysql+pymysql://root:root@mariadb:3306/resources"
|
||||||
|
else:
|
||||||
|
return "mysql+pymysql://root:mysqlpw@testdb:3306/resources"
|
||||||
|
|
||||||
# 单例元类
|
# 单例元类
|
||||||
class SingletonMeta(type):
|
class SingletonMeta(type):
|
||||||
_instances = {} # 存储每个类的唯一实例
|
_instances = {} # 存储每个类的唯一实例
|
||||||
@ -30,10 +39,8 @@ class SingletonMeta(type):
|
|||||||
class BaseMysqlHandler(metaclass=SingletonMeta):
|
class BaseMysqlHandler(metaclass=SingletonMeta):
|
||||||
def __init__(self, db_url: Optional[str] = None):
|
def __init__(self, db_url: Optional[str] = None):
|
||||||
# 默认 MySQL 连接地址(从环境变量或配置文件读取更灵活)
|
# 默认 MySQL 连接地址(从环境变量或配置文件读取更灵活)
|
||||||
self.db_url = db_url or os.getenv(
|
self.db_url = db_url or get_mysql_url()
|
||||||
"MYSQL_RESOURCES_URL",
|
|
||||||
"mysql+pymysql://root:mysqlpw@testdb:3306/resources?charset=utf8mb4"
|
|
||||||
)
|
|
||||||
# 初始化引擎和会话
|
# 初始化引擎和会话
|
||||||
self.engine = create_engine(self.db_url)
|
self.engine = create_engine(self.db_url)
|
||||||
self.Session = sessionmaker(bind=self.engine)
|
self.Session = sessionmaker(bind=self.engine)
|
||||||
|
|||||||
Reference in New Issue
Block a user