首页 > 数据库 >Python pymysql批量执行目录里面的多个sql文件

Python pymysql批量执行目录里面的多个sql文件

时间:2022-11-07 16:01:01浏览次数:36  
标签:count Python sql pymysql filename each line

思路:
循环指定目录中的每个.sql文件,读取每行内容,拼接到列表中,按每次1000行执行。

备注:
pymysql在8.0版本以前(不包含8.0)默认可以同时执行多条sql语句的,例如“insert into tb(1);insert into tb(2);”
但是在8.0之后不再为默认,需要手动配置pymysql.connect的参数client_flag=CLIENT.MULTI_STATEMENTS,否则会报错。

import os
import pymysql
from pymysql.constants import CLIENT


# pymysql在8.0版本之后需要手动配置,以支持同时执行多条sql语句
conn = pymysql.connect(host='192.168.1.17', user='root', passwd="password", db='db1', client_flag=CLIENT.MULTI_STATEMENTS)
cur = conn.cursor()

path = r'D:\Projects\python\mysqltool\sql\new'
for filename in os.listdir(path):
    if filename.endswith(".sql") == False:
        continue  
    count = 0
    time = 0
    sql = []    
    filepath = os.path.join(path,filename)
    with open(filepath, "r", encoding="utf-8") as f:
        for each_line in f.readlines():                  
            if not each_line or each_line == "\n":                 
                continue            
            if count < 1000: 
                sql.append(each_line.strip())               
                count += 1
            else:
                #达到1000行时执行            
                time += 1
                print('{}第{}次开始执行sql语句,记录数:{}'.format(filename, time, count))
                cur.execute("".join(sql))
                conn.commit()
                sql = [each_line.strip()]                
                count = 1
        #读取完文件,不到1000行
        if sql:         
            time += 1
            print('{}第{}次开始执行sql语句,记录数:{}'.format(filename, time, count))
            cur.execute("".join(sql))
            conn.commit()

 

标签:count,Python,sql,pymysql,filename,each,line
From: https://www.cnblogs.com/gdjlc/p/16866250.html

相关文章

  • MySQL_总结_数据类型
    一数值型1整型Tinyint、smallint、mediumint、int/integer、bigint(根据所占的字节的大小越来越大1、2、3、4、8)特点①    都可以设置无符号和有符号,默认有符......
  • MySQL_约束
    常见约束含义一种限制,用于限制表中的数据为了保证表中的数据的准确和可靠性分类Notnull:非空约束用于保证该字段的值不能为空如:姓名、学号等Default:默认约束  ......
  • 『ML笔记』PCA(Principal Component Analysis)降维全面解读+python实现!
    PCA(PrincipalComponentAnalysis)降维全面解读+python实现!文章目录​​一、数据降维​​​​1.1、维度诅咒问题​​​​1.2、为什么要进行数据降维?​​​​1.3、降维的方......
  • python 中记录dmesg信息并进行分析的方法(@)
    在Python中记录系统的dmesg信息,并进行分析的方法简述: 基本命令:dmesg-C清除之前的dmesg 信息;dmesg-T>testExample.msg   将dmesg信息保存在testExampl......
  • MySQL_数据类型_字符型
    较短文本charvarchar字符串类型最多字符数描述及存储需求char(M)MM:0~255之间的整数varchar(M)MM:0~65535之间的整数区别 写法M的含义......
  • MySQL_数据类型_日期型
    分类Date:只保存日期Time:只保存时间Year:只保存年 Datetime:保存日期+时间Timestamp:保存日期+时间特点 字节范围时区等的影响datetime81000~9999不......
  • MySQL_总结_联合查询
    一、含义Union:合并联合,将多次查询结果合并成一个结果二、语法查询语句1Union【all】查询语句2Union【all】…三、意义1将一条较复杂的查询语句拆分成多条语......
  • MySQL_查询顺序
    语法:7Select查询列表1From表1别名2连接类型join表23On连接条件4Where筛选5Groupby分组列表6Having筛选8Order......
  • MySQL_数据类型_整型
    数据类型字节范围Tinyint1有符号:-128~127无符号:0~255Smallint2有符号:-32768~32767无符号:0~65535Mediumint3有符号:无符号:(不用记)Int、inte......
  • MySQL_数据类型_小数
    浮点型字节范围float4不记double8不记定点型字节范围DEC(M,D)DECIMAL(M,D)M+2最大取值范围与double相同,给定decimal的有效取值范围由M和D决......