python生成sql文件_Python 数据库Insert语句脚本生成工具(SQL Server)
编写这个小工具,是因为平时部署项目的时候,需要导出一些公共的数据(权限、参数设置等),覆盖插入正式环境。
话不多说,直接上代码:
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)相关推荐
- python运行pyc文件_Python什么情况下会生成pyc文件?
作为Python爱好者,需要了解.py脚本的基本运行机制及特性: 在很多工作上Python的运行流程基本上取决于用户,因此源码不需要编译成二进制代码(否则无法实现大部分贴近用户的特性),而直接从源码运 ...
- python调用git生成log文件_python解析git log后生成页面显示git更新日志信息
使用git log可以查到git上项目的更新日志. 如下两个git项目,我想把git的日志信息解析成一个便于在浏览器上查看的页面. https://github.com/gityf/lua https ...
- gbase导入sql文件_GBase数据库自动备份脚本
ontape是GBase 8s数据库的简单易用的备份工具,但是它必须交互进行,对数据库的日常维护有一定的限制,比如,我们想在晚上进行备份,而不是在白天工作的时间. 下面我就简单示例,实现ontape的 ...
- php导入sql文件到数据库中,PHP执行SQL文件并将SQL文件导入到数据库
//读取文件内容$_sql = file_get_contents("test.sql");$_arr = explode(";", $_sql);$_mysq ...
- Sql文件导入数据库-保姆级教程
目录 一:准备工作-.sql文件 二:在编辑工具中打开创建的sql文件-存放指令并保存 三:右键点击运行SQL文件 打开.sql文件 点击开始,加载完成后点击关闭 再点击表----刷新一下-----即 ...
- mysql导入sql文件、数据库时报错ERROR: ASCII ‘\0‘ appeared in the statement
mysql导入sql文件.数据库时报错ERROR: ASCII '\0' appeared in the statement
- mysql导入的sql文件导入到哪里了_mysql导入导出sql文件
window下 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql ...
- Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法
本文讲述了在linux命令下导出导入.sql文件的方法.分享给大家供大家参考,具体如下: 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: ...
- python生成表格文件_python 读取excel文件生成sql文件实例详解
python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...
最新文章
- c++ resizereserve
- php使用位运算来实现日留存的算法
- Quartz-JobListener解读
- MATLAB中cfl,ML4835复合PFC/CFL小型荧光灯基于Matlab的电力电子电路仿真方法
- 在线婚恋为何成了一门丧生意
- 扬州大学复试1301软件工程【期末复习ppt及真题个人复习用】
- Web学习之跨域问题及解决方案
- Angular 8正式发布!
- jsp:setProperty
- vCenter Server Appliance(VCSA )6.7部署指南
- android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享
- 使用python中正则表达式匹配linux ifconifg命令中的具体信息
- Arduino-atmega328p最小系统
- 决策树 BP神经网络(BPNN) SVM实现iris鸢尾花数据集的分类
- LYNC 2010 中文测试版已经可以下载
- VP9编码(4)-- 约定
- 计算机用户拒绝访问权限,解决局域网内拒绝访问无访问权限的问题
- 彷徨 | HDFS核心设计思想图
- java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )
- python如何爬虫股票数据_如何抓取股票数据_用Python抓取新浪的股票数据
热门文章
- Spark Shuffle系列-----1. Spark Shuffle与任务调度之间的关系
- session和cookie_JSP学习
- $con=mysql_connect_php连接mysql mysql_connect()与mysqli_connect()的盲点
- micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
- 无序数组求第k大的数 python_【python刷题】寻找数组中第K大/小的数
- linux java setting,setting java_home and path environmental variables in linux [duplicate]
- 服务器无法继续该事务 3400000006 错误原因--JAVA调用SQLSERVER存储过程时过程发生异常内部事务未
- Django讲课笔记07:设置路由分发规则
- 【BZOJ4035】数组游戏,博弈论+分块乱搞
- 【BZOJ2756】奇怪的游戏,网络流判断答案