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

49 lines
1.6 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.

import shutil
import time
from Common import *
class UpdateSql():
def __init__(self, install_path):
self.root_path = install_path
self.mariadb_data_path = os.path.join(install_path, 'mariadb', 'data')
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):
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__':
current_dir = os.getcwd()
logger.info("开始更新")
UpdateSql(current_dir).init_db()
logger.info("完成更新3秒钟后退出")
time.sleep(3)