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")

你可能感兴趣的:(python执行bat文件)