利用Python如何批量修改数据库执行Sql文件

来源:中文源码网    浏览: 次    日期:2018年9月2日

【下载文档:  利用Python如何批量修改数据库执行Sql文件.txt 】

(友情提示:右键点上行txt文档名->目标另存为)

利用Python如何批量修改数据库执行Sql文件 前言

由于上篇文章中批量修改了文件,有的时候数据库也需要批量修改一下,之前的做法是使用宝塔的phpMyAdmin导出一个已经修改好了的sql文件,然后依次去其他数据库里导入,效率不说极低,也算低了,且都是些重复性的劳动,所以打算用Python来批量执行sql

环境 版本:Python3.6

系统:MacOS

IDE:PyCharm

第三方库:pymysqlShow Code

import pymysqlhost = 'xxx.65.9.191'

username = 'root'

password = 'root'def connectMySQL():

print('开始连接数据库')

# 打开数据库连接

db = pymysql.connect(host,username,password,charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor() # 使用 execute() 显示所有数据库

cursor.execute("SHOW DATABASES")

print('开始查询所有数据库') # 获取所有数据库名称

data = cursor.fetchall() # 开始操作

for dbb in data:

dbname = dbb[0]

print('选中' + dbname + '数据库')

# 选择数据库

cursor.execute("use " + dbname)

# 查看有哪些表

cursor.execute("show tables")

table = cursor.fetchall()

# 如果不是3个表的就不管

if len(table) != 3:

continue

for tb in table:

tbname = tb[0]

print('开始删除'+tbname+'表')

# 删除所有的表

cursor.execute("DROP TABLE " + tbname)

executeScriptsFromFile('1.sql', cursor)

db.close()

def executeScriptsFromFile(filename,cursor):

fd = open(filename, 'r',encoding='utf-8')

sqlFile = fd.read()

fd.close()

sqlCommands = sqlFile.split(';') for command in sqlCommands:

try:

cursor.execute(command)

except Exception as msg:

print(msg) print('sql执行完成')

if __name__ == "__main__":

connectMySQL()解释代码

这是用于执行sql文件,这里第一句就有个坑,最好设置encoding='utf-8'否则可能会报错UnicodeEncodeError: 'latin-1' codec can't encode characters in position 41-44: ordinal not in range(256),当读取了sql文件后用;分割语句然后用for循环依次执行sql语句

def executeScriptsFromFile(filename,cursor):

fd = open(filename, 'r',encoding='utf-8')

sqlFile = fd.read()

fd.close()

sqlCommands = sqlFile.split(';') for command in sqlCommands:

try:

cursor.execute(command)

except Exception as msg:

print(msg)

print('sql执行完成')这一段比较容易理解了,首先是连接数据库,注意还是最好设置一下charset='utf8' ,因为我要操作多个数据库执行sql文件,所以先把数据库名称全部获取出来,这里获取出来的结果是元组类型,即使for循环后出来的也是一个元组,所以用[0]取出元组中的值,然后选中数据库执行删表操作(当然不是每个人都要按我这些操作哈,需要执行啥操作就自己改SQL语句),表删完了,然后开始执行1.sql文件,执行完成后关闭数据库

def connectMySQL():

print('开始连接数据库')

# 打开数据库连接

db = pymysql.connect(host,username,password,charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor() # 使用 execute() 显示所有数据库

cursor.execute("SHOW DATABASES")

print('开始查询所有数据库') # 获取所有数据库名称

data = cursor.fetchall() # 开始操作

for dbb in data:

dbname = dbb[0]

print('选中' + dbname + '数据库')

# 选择数据库

cursor.execute("use " + dbname)

# 查看有哪些表

cursor.execute("show tables")

table = cursor.fetchall()

# 如果不是3个表的就不管

if len(table) != 3:

continue

for tb in table:

tbname = tb[0]

print('开始删除'+tbname+'表')

# 删除所有的表

cursor.execute("DROP TABLE " + tbname)

executeScriptsFromFile('1.sql', cursor)

db.close()这2篇文章的代码从思路、编写、到测试,用了一下午吧!我对Python也不是很熟悉,所以中间也踩了些坑,但确实能看出来,Python作为胶水语言拿来做这些小工具真的舒服!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对中文源码网的支持。

亲,试试微信扫码分享本页! *^_^*

python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件相关推荐

  1. python对excel增删改查_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  2. python批量生成图_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

  3. python检索用人名查电话_利用Python电话本小程序!这波操作你给几分?

    原标题:利用Python电话本小程序!这波操作你给几分? 最近比较忙,只能抽空的写写文章,其实我也是一个上班族,python完全是个人想学然后希望以后对工作有所帮助,2019年了,祝大家新年快乐. 2 ...

  4. python实现批量下载视频_利用Python实现批量下载腾讯视频!

    原标题:利用Python实现批量下载腾讯视频! 导语 利用Python下载腾讯非VIP视频,也就是可以免费观看的视频.做这个的起因是最近在看一个叫"请吃红小豆吧"的动漫,一共三分钟 ...

  5. python如何爬取sci论文_利用python爬取并翻译GEO数据库

    GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这里面挖掘(bai piao)数据,发个sci提前 ...

  6. python写dnf游戏脚本辅助_利用Python自动化操作鼠标键盘刷金币,工作室都靠这种脚本搬砖!...

    不管是英雄联盟还是王者荣耀,总是有一个特殊的模式可以用来刷金币,为什么说是特殊模式呢?因为打的都是人机,或者并不影响游戏平衡,被其它玩家举报,同时你这种模式的战绩也没人去看你的. 如果能利用Pytho ...

  7. python 钉钉机器人发送图片_利用Python自动发送钉钉数据消息

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

  8. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  9. python把汉字变成拼音英文_利用python将表格中的汉字转化为拼音

    GB18030的字符集标准 http://zbgb5.com/2/StandardDetail479488.htm 缺少包时用pip install 进行安装,例如: pip install xlsx ...

最新文章

  1. android 问题汇总系列之四
  2. jenkins maven没有使用全局设置文件地址_持续集成工具Jenkins看这篇就够啦!
  3. VTK:小部件之ImageTracerWidget
  4. wait()和sleep()
  5. C++ STL 迭代器5种类型 简介
  6. 7-9 用天平找小球 (10 分)
  7. 什么是epoll的水平触发与边缘触发?两段代码彻底理解
  8. 绝佳时机,前所未遇,让艰巨作业全自动化
  9. 【硬件解码系列】之ffmpeg硬件加速器
  10. 竞彩足球混合过关赔率API调用示例代码
  11. 黑马程序员C++学习笔记(第二阶段核心:面向对象)(二)
  12. macOS 12兼容机型列表 想知道你的Mac是否支持macOS Monterey吗?
  13. 重邮学报和计算机工程与应用,重庆邮电大学学报
  14. 记:COFF文件下的解析说明
  15. 紧贴潮流,初心未改:OpenInfra Days China升级回归,打造专属OpenStackers的开源大趴
  16. php惠新宸框架,首位国人惠新宸加入PHP官方开发组
  17. .net mvc ef 视图未定义主键问题
  18. 防火墙一个系统加固的例子
  19. Android Camera:从零开发一款相机APP Day01:前景
  20. 内存泄漏(Memory Leak )和内存溢出

热门文章

  1. 鸿蒙手机测试报名,鸿蒙2.0报名下载-鸿蒙2.0申请公测报名入口 v1.0-优盘手机站...
  2. php项目电影院售票管理系统,电影院售票管理系统
  3. python之变量的私密处理
  4. 对scala函数总结
  5. mysql作业是什么意思_MySQL 作业七
  6. ECS之System系统
  7. Xml的编码和Bom
  8. 在ASP.NET Identity 2.0中使用声明(Claims)实现用户组
  9. 蚂蚁金服数据可视化引擎 G2 4.0 正式版发布!
  10. 将JavaScript和VBScript添加到您的.NET Apps