From a664a3584f62d708ef4af45297a335a4c636c2bc Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 25 Jun 2025 11:55:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0updatesql=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/install/UpdateSql.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/install/UpdateSql.py b/src/install/UpdateSql.py index 1e48b10..c7614f1 100644 --- a/src/install/UpdateSql.py +++ b/src/install/UpdateSql.py @@ -2,25 +2,41 @@ import shutil import time from Common import * -from loguru import logger + + class UpdateSql(): def __init__(self, install_path): - self.service_name = 'ComacMariaDB' self.root_path = install_path self.mariadb_data_path = os.path.join(install_path, 'mariadb', 'data') - self.mariadb_port = mariadb_port - self.passowrd = mariadb_passowrd - self.init_schema = mariadb_init_schema - self.init_sql = os.path.join(install_path, 'mariadb', 'data', 'init.sql') + self.init_sql = get_resource_path(os.path.join('datas', 'init.sql')) + self.__set_replace() + + def __set_replace(self): + with open(self.init_sql, 'r', encoding='utf-8') as file: + lines = file.readlines() + modified = False + new_lines = [] + for line in lines: + if 'CREATE TABLE' in line and 'IF NOT EXISTS' not in line: + new_line = line.replace('CREATE TABLE', 'CREATE TABLE IF NOT EXISTS ') + new_lines.append(new_line) + modified = True + else: + new_lines.append(line) + + # 如果有修改,则写回文件 + if modified: + with open(self.init_sql, 'w', encoding='utf-8') as file: + file.writelines(new_lines) def init_db(self): - new_path = get_resource_path(os.path.join('datas', 'init.sql')) - shutil.copy(str(new_path), self.mariadb_data_path) - command2 = fr'{self.root_path}\mariadb\bin\mysql --no-defaults -u root -p{self.passowrd} -P {self.mariadb_port} {self.init_schema} < {self.init_sql}' + shutil.copy(str(self.init_sql), self.mariadb_data_path) + command2 = fr'{self.root_path}\mariadb\bin\mysql --no-defaults -u root -p{mariadb_passowrd} -P {mariadb_port} {mariadb_init_schema} < {self.mariadb_data_path}' with os.popen(command2) as stream: res2 = stream.read() logger.info(res2) os.remove(self.init_sql) + os.remove(self.mariadb_data_path) pass if __name__ == '__main__':