database-win-pkg/src/install/InstallMariaDB.py

82 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from Common import *
current_dir = os.path.dirname(sys.executable) if getattr(sys, 'frozen', False) else os.path.dirname(
os.path.abspath(__file__))
log_dir = os.path.join(current_dir, "logs")
class InstallMariaDb:
def __init__(self):
self.service_name = 'ComacMariaDB'
self.mariadb_data_path = os.path.join(current_dir, 'mariadb', 'data')
self.init_sql = os.path.join(current_dir, 'mariadb', 'data', 'init.sql')
pass
def start_install_mariadb(self):
existStatus = check_service_exist(self.service_name)
if existStatus:
start_service_if_not_running(self.service_name)
return
logger.info("开始安装")
self.__register_service()
logger.info("启动数据库")
self.__start_mariadb()
logger.info("数据库初始化")
self.__init_db_user()
logger.info("安装完成10秒自动退出")
time.sleep(10)
pass
def __start_mariadb(self):
args1 = 'net'
args2 = 'start'
res = subprocess.run([args1, args2, self.service_name], text=True, capture_output=True)
if res.returncode != 0:
logger.info(res.stdout)
logger.info("服务启动失败")
logger.error(res.stderr)
else:
logger.info("服务启动成功")
def __register_service(self):
args1 = current_dir + '/mariadb/bin/mysql_install_db.exe'
args2 = '--datadir=' + self.mariadb_data_path
args3 = '--service=' + self.service_name
args4 = '--password=' + mariadb_passowrd
args5 = '--port=' + str(mariadb_port)
res = subprocess.run([args1, args2, args3, args4, args5], text=True, capture_output=True)
if res.returncode != 0:
logger.info(res.stdout)
logger.info("服务注册失败")
logger.error(res.stderr)
else:
logger.info("服务注册成功")
def __init_db_user(self):
command1 = fr'{current_dir}\mariadb\bin\mysql.exe -u root -p{mariadb_passowrd} -P {mariadb_port} -e "create database if not exists {mariadb_init_schema}; use {mariadb_init_schema};"'
command2 = fr'{current_dir}\mariadb\bin\mysql.exe -u ****** -p****** -P { mariadb_port} -e "create database if not exists {mariadb_init_schema}; use {mariadb_init_schema};"'
logger.info(command2)
with os.popen(command1) as stream:
res = stream.read()
logger.info(res)
schema_dir = fr'{current_dir}\mariadb\data\{mariadb_init_schema}'
if not os.path.exists(schema_dir):
logger.error("数据库初始化失败")
raise MyCustomError("数据库安装失败")
logger.info("数据库初始化成功")
if __name__ == '__main__':
ensure_dir(log_dir)
logger.add(
sink=os.path.join(log_dir, "InstallMariaDB_{time}.log"), # 文件路径模板
rotation="10 MB", # 文件大小达到10MB时轮转
retention="1 days", # 保留最近1天的日志
compression="zip", # 压缩旧日志节省空间
enqueue=True, # 线程安全写入
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}" # 自定义格式
)
InstallMariaDb().start_install_mariadb()
pass