# -*- coding: UTF-8 -*-
# 命名方式为表名_操作_字段
import os
import tempfile
import connectDB
from controller import fileController
curosrdiction = connectDB.curosr_diction
database_back_folder = “”
def exec_sql(sqltext):
”’
执行sql,成功返回true
:param sqltext: sql语句
:return:
”’
result = curosrdiction.executescript(sqltext)
curosrdiction.commit()
return result
def backup_database():
”’
备份数据库
:return:
”’
global database_back_folder
database_back_folder = tempfile.mkdtemp()
fileController.copy_file_to_folder(‘resource/sqllite.db’, database_back_folder)
write_bat()
def restore_database():
”’
恢复数据库
:return:
”’
curosrdiction.close()
fileController.copy_file(srcfile=database_back_folder + “\\sqllite.db”, dstfile=’resource/sqllite.db’)
def read_sql_from_text(file_name):
”’
从文本文件中读取sql并且执行,执行失败,就把原来的数据库覆盖回来
:param file_name:
:return:
”’
f = open(file_name, ‘r’)
sql = f.read()
if not exec_sql(sql):
run_bat()
def write_bat():
sql_database_path = os.getcwd() + “\\resource\\sqllite.db”
sql_database_path_shm = os.getcwd() + “\\resource\\sqllite.db-shm”
sql_database_path_wal = os.getcwd() + “\\resource\\sqllite.db-wal”
bat_name = ‘copy.bat’
s1 = ”’@echo off
@ping -n 5 127.1 >nul 2>nul
echo delete database…
del ”’ + sql_database_path + ”’
del ”’ + sql_database_path_shm + ”’
del ”’ + sql_database_path_wal + ”’
echo restore database…
@ping -n 5 127.1 >nul 2>nul
copy ”’ + database_back_folder + “\\sqllite.db ” + sql_database_path + ”’
echo restore finish
pause”’
f = open(bat_name, ‘w’)
f.write(s1)
f.close()
def run_bat():
”’
运行bat
:return:
”’
os.system(‘start copy.bat’)
def update_sql():
”’
开始更新数据库的主入口
:return:
”’
backup_database()
read_sql_from_text(“resource/download/1.2.3_sql.txt”)