2022年 11月 9日

python执行bat文件_python生成bat脚本,并且执行bat脚本

# -*- 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”)