编写这个小工具,是因为平时部署项目的时候,需要导出一些公共的数据(权限、参数设置等),覆盖插入正式环境。
话不多说,直接上代码:
import pyodbc import warnings import decimal import winreg import os import configparser import time import datetime warnings.filterwarnings('ignore') def link(): root_dir = os.path.split(os.path.realpath(__file__))[0]# 获取当前文件所在目录的上一级目录,即项目所在目录 configPath = os.path.join(root_dir, "config.txt") cf = configparser.ConfigParser() cf.read(configPath) # 拼接得到config.txt文件的路径,直接使用 # 数据库服务器信息 driver = cf.get("Mssql-Database", "driver") # 因版本不同而异 server = cf.get("Mssql-Database", "server") user = cf.get("Mssql-Database", "user") password = cf.get("Mssql-Database", "password") database = cf.get("Mssql-Database", "database") table = cf.get("Mssql-Database", "table") conn = pyodbc.connect(driver=driver, server=server, user=user, password=password, database=database) #数据库链接 cur = conn.cursor()#开启 arr = table.split(',') #多个表查询,用逗号隔开',' path = get_desktop() + "\\SqlDataScript" if not os.path.exists(path): os.mkdir(path) for ar in arr: sql='SELECT * FROM %s;'%ar #执行查询 print(sql) # 查询语句 cur.execute(sql) rows = cur.fetchall() # list index = cur.description f = open(path +"\\"+ ar +"("+ time.strftime('%Y%m%d%H%M%S') +")" +".sql","w+",encoding='utf-8') #生成脚本(表名+时间戳为文件名) #拼接insert语句 for res in rows: sqlText = 'INSERT INTO %s('%ar sqlVal = 'VALUES(' for i in range(len(index)): sqlText = sqlText + index[i][0] +','#字段名 if type(res[i]) == datetime.datetime: #时间格式字段,保留时分秒(不限制的话,有时候生成的毫秒格式有问题) sqlVal = sqlVal + "'%s',"%res[i].strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] else: sqlVal = sqlVal + "'%s',"%res[i] #字段内容 sqlVal = sqlVal.strip(',') + ')' #去除最后的',' sqlText = sqlText.strip(',') + ')' +' '+ sqlVal + ';' #字段名 + 字段内容 print(sqlText) #打印sql f.write("%s\r\n" % sqlText) #文件写入 f.close() conn.close() #关闭数据库链接 os.system("start explorer "+ path) #打开文件存放目录 # 获取桌面路径 def get_desktop(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') return winreg.QueryValueEx(key, "Desktop")[0] if __name__=='__main__': link()
执行完的效果展示:
表名加时间戳命名,临时存放桌面文件夹,并自动打开文件夹(方便查看,不用去找)。
config.txt 配置文件,搭配使用,需要访问什么数据库直接改配置文件即可。
数据库访问地址要带上端口号192.168.1.222,1433
python 打包exe:
找到文件所在目录
执行脚本pyinstaller -F BackUp.py
打包成功,exe生成的路径如下:
改个名字,把config文件一起配合使用即可。大功告成~
附上百度云的共享地址:
链接:https://pan.baidu.com/s/1AyvUDNDM2lBZlHmQNanpbA
提取码:2qkm