首页 » SEO优化 » 浮屠php挪用python技巧_Python进修教程运用Python批量修改数据库实行Sql文件

浮屠php挪用python技巧_Python进修教程运用Python批量修改数据库实行Sql文件

访客 2024-12-19 0

扫一扫用手机浏览

文章目录 [+]

有时候咱们批量修正了文件,有的数据库也须要批量修正一下,之前的做法是利用宝塔的phpMyAdmin导出一个已经修恰好了的sql文件,然后依次去其他数据库里导入,效率不说极低,也是非常低了,且都是些重复性的劳动,以是打算用Python来批量实行sql

环境

浮屠php挪用python技巧_Python进修教程运用Python批量修改数据库实行Sql文件

版本:Python3.6

浮屠php挪用python技巧_Python进修教程运用Python批量修改数据库实行Sql文件
(图片来自网络侵删)

系统:MacOS

IDE:PyCharm

第三方库:pymysql

Show 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()

文章的代码从思路、编写、到测试,也用了蛮久的韶光!
但确实能看出来,用Python措辞拿来做这些小工具真的舒畅!
大家也可以试试,一些Python的小技巧,的确能给咱的事情抵赖很多便利!
更多的Python学习教程和Python学习技巧也会连续为大家更新!

标签:

相关文章