Initial commit
This commit is contained in:
72
xuexiao/config.py
Normal file
72
xuexiao/config.py
Normal file
@@ -0,0 +1,72 @@
|
||||
import os
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
LOCAL_DB_URL = "mysql+pymysql://root:DsideaL147258369@192.168.10.250:9030/yltcharge?charset=utf8mb4"
|
||||
write_engine = create_engine(LOCAL_DB_URL, pool_recycle=3600, pool_pre_ping=True)
|
||||
local_engine = write_engine # 兼容旧名
|
||||
|
||||
|
||||
class Config:
|
||||
"""应用配置"""
|
||||
SECRET_KEY = os.environ.get('SECRET_KEY', 'student-course-mgmt-secret-key-2024')
|
||||
|
||||
# 数据库配置:支持 MySQL / Aliyun RDS MySQL / SQLite
|
||||
#
|
||||
# 方式1 - 自建MySQL:
|
||||
# DB_TYPE=mysql, MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB
|
||||
#
|
||||
# 方式2 - 阿里云RDS MySQL:
|
||||
# DB_TYPE=aliyun_mysql
|
||||
# ALIYUN_MYSQL_HOST (必填,RDS内网/外网地址,如 rm-xxxxx.mysql.rds.aliyuncs.com)
|
||||
# ALIYUN_MYSQL_PORT (默认3306)
|
||||
# ALIYUN_MYSQL_USER (默认root)
|
||||
# ALIYUN_MYSQL_PASSWORD (必填)
|
||||
# ALIYUN_MYSQL_DB (默认student_course)
|
||||
# ALIYUN_MYSQL_SSL (可选,设为1启用SSL连接)
|
||||
#
|
||||
# 不设置则默认使用 SQLite(开发环境)
|
||||
DB_TYPE = os.environ.get('DB_TYPE', 'mysql').lower()
|
||||
|
||||
if DB_TYPE == 'mysql':
|
||||
SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI', LOCAL_DB_URL)
|
||||
SQLALCHEMY_ENGINE_OPTIONS = {
|
||||
'pool_recycle': 3600,
|
||||
'pool_pre_ping': True,
|
||||
}
|
||||
|
||||
elif DB_TYPE == 'aliyun_mysql':
|
||||
ALIYUN_MYSQL_HOST = os.environ.get('ALIYUN_MYSQL_HOST', 'rm-xxxxx.mysql.rds.aliyuncs.com')
|
||||
ALIYUN_MYSQL_PORT = os.environ.get('ALIYUN_MYSQL_PORT', '3306')
|
||||
ALIYUN_MYSQL_USER = os.environ.get('ALIYUN_MYSQL_USER', 'root')
|
||||
ALIYUN_MYSQL_PASSWORD = os.environ.get('ALIYUN_MYSQL_PASSWORD', '')
|
||||
ALIYUN_MYSQL_DB = os.environ.get('ALIYUN_MYSQL_DB', 'student_course')
|
||||
ALIYUN_MYSQL_SSL = os.environ.get('ALIYUN_MYSQL_SSL', '0')
|
||||
|
||||
# 构建连接URI,阿里云RDS强制utf8mb4
|
||||
_ssl_param = '&ssl=true&ssl_ca=/etc/ssl/certs/ca-certificates.crt' if ALIYUN_MYSQL_SSL == '1' else ''
|
||||
SQLALCHEMY_DATABASE_URI = (
|
||||
f'mysql+pymysql://{ALIYUN_MYSQL_USER}:{ALIYUN_MYSQL_PASSWORD}'
|
||||
f'@{ALIYUN_MYSQL_HOST}:{ALIYUN_MYSQL_PORT}/{ALIYUN_MYSQL_DB}'
|
||||
f'?charset=utf8mb4{_ssl_param}'
|
||||
)
|
||||
# 阿里云RDS推荐连接池参数:长连接 + 自动重连 + 超时回收
|
||||
SQLALCHEMY_ENGINE_OPTIONS = {
|
||||
'pool_pre_ping': True, # 每次取连接前检测存活,避免RDS主动断连后报错
|
||||
'pool_recycle': 1800, # RDS默认wait_timeout=28800,设1800秒回收更安全
|
||||
'pool_size': 10, # 常驻连接数
|
||||
'max_overflow': 20, # 峰值额外连接
|
||||
'pool_timeout': 30, # 获取连接超时(秒)
|
||||
'connect_args': {
|
||||
'connect_timeout': 10, # 建立TCP连接超时(秒)
|
||||
'read_timeout': 30, # 读超时(秒)
|
||||
'write_timeout': 30, # 写超时(秒)
|
||||
},
|
||||
}
|
||||
|
||||
else:
|
||||
SQLALCHEMY_DATABASE_URI = 'sqlite:///student_course.db'
|
||||
SQLALCHEMY_ENGINE_OPTIONS = {
|
||||
'pool_pre_ping': True,
|
||||
}
|
||||
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
||||
Reference in New Issue
Block a user