编写这个小工具,是因为平时部署项目的时候,需要导出一些公共的数据(权限、参数设置等),覆盖插入正式环境。

话不多说,直接上代码:

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

python生成sql文件_Python 数据库Insert语句脚本生成工具(SQL Server)相关推荐

  1. python运行pyc文件_Python什么情况下会生成pyc文件?

    作为Python爱好者,需要了解.py脚本的基本运行机制及特性: 在很多工作上Python的运行流程基本上取决于用户,因此源码不需要编译成二进制代码(否则无法实现大部分贴近用户的特性),而直接从源码运 ...

  2. python调用git生成log文件_python解析git log后生成页面显示git更新日志信息

    使用git log可以查到git上项目的更新日志. 如下两个git项目,我想把git的日志信息解析成一个便于在浏览器上查看的页面. https://github.com/gityf/lua https ...

  3. gbase导入sql文件_GBase数据库自动备份脚本

    ontape是GBase 8s数据库的简单易用的备份工具,但是它必须交互进行,对数据库的日常维护有一定的限制,比如,我们想在晚上进行备份,而不是在白天工作的时间. 下面我就简单示例,实现ontape的 ...

  4. php导入sql文件到数据库中,PHP执行SQL文件并将SQL文件导入到数据库

    //读取文件内容$_sql = file_get_contents("test.sql");$_arr = explode(";", $_sql);$_mysq ...

  5. Sql文件导入数据库-保姆级教程

    目录 一:准备工作-.sql文件 二:在编辑工具中打开创建的sql文件-存放指令并保存 三:右键点击运行SQL文件 打开.sql文件 点击开始,加载完成后点击关闭 再点击表----刷新一下-----即 ...

  6. mysql导入sql文件、数据库时报错ERROR: ASCII ‘\0‘ appeared in the statement

    mysql导入sql文件.数据库时报错ERROR: ASCII '\0' appeared in the statement

  7. mysql导入的sql文件导入到哪里了_mysql导入导出sql文件

    window下 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql ...

  8. Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法

    本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: ...

  9. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

最新文章

  1. c++ resizereserve
  2. php使用位运算来实现日留存的算法
  3. Quartz-JobListener解读
  4. MATLAB中cfl,ML4835复合PFC/CFL小型荧光灯基于Matlab的电力电子电路仿真方法
  5. 在线婚恋为何成了一门丧生意
  6. 扬州大学复试1301软件工程【期末复习ppt及真题个人复习用】
  7. Web学习之跨域问题及解决方案
  8. Angular 8正式发布!
  9. jsp:setProperty
  10. vCenter Server Appliance(VCSA )6.7部署指南
  11. android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享
  12. 使用python中正则表达式匹配linux ifconifg命令中的具体信息
  13. Arduino-atmega328p最小系统
  14. 决策树 BP神经网络(BPNN) SVM实现iris鸢尾花数据集的分类
  15. LYNC 2010 中文测试版已经可以下载
  16. VP9编码(4)-- 约定
  17. 计算机用户拒绝访问权限,解决局域网内拒绝访问无访问权限的问题
  18. 彷徨 | HDFS核心设计思想图
  19. java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )
  20. python如何爬虫股票数据_如何抓取股票数据_用Python抓取新浪的股票数据

热门文章

  1. Spark Shuffle系列-----1. Spark Shuffle与任务调度之间的关系
  2. session和cookie_JSP学习
  3. $con=mysql_connect_php连接mysql mysql_connect()与mysqli_connect()的盲点
  4. micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
  5. 无序数组求第k大的数 python_【python刷题】寻找数组中第K大/小的数
  6. linux java setting,setting java_home and path environmental variables in linux [duplicate]
  7. 服务器无法继续该事务 3400000006 错误原因--JAVA调用SQLSERVER存储过程时过程发生异常内部事务未
  8. Django讲课笔记07:设置路由分发规则
  9. 【BZOJ4035】数组游戏,博弈论+分块乱搞
  10. 【BZOJ2756】奇怪的游戏,网络流判断答案