python读取sql文件,批量操作数据库

import pymysql

#连接数据库
def getConnect():
    conn = pymysql.connect(
        host='1.1.1.1',#数据库ip
        port=3306,#数据库port
        user='root',#数据库名称
        passwd='root',#数据库密码
        db='test',#数据库名称
        charset='utf8')
    return conn

def executeScriptsFromFile(filename,cur):
    #fd = open(filename,'r',encoding='utf-8')
    #sqlFile = fd.read()
    #fd.close()
    #为什么使用with open 可参考https://blog.csdn.net/xinyuski/article/details/88865162
    with open(filename,'r',encoding='utf-8') as fd:#fd文件句柄
        sqlFile = fd.read()
    sqlCommands = sqlFile.split('\n')

    for command in sqlCommands:
        try:
            cur.execute(command)
        except Exception as msg:
            print(msg)
    print('sql执行完成')

conn = getConnect()
# 生成游标对象
cur = conn.cursor()
executeScriptsFromFile('D:\test\Desktop\SQL.sql',cur)#文件路径
# 涉及写操作注意要提交
conn.commit()
# 关闭游标
cur.close()
# 关闭连接
conn.close()

代码解读:

首先生成数据库连接对象,conn,对象可以调用以下方法:

       (1)close():关闭此connect对象, 关闭后无法再进行操作,除非再次创建连接
  (2)commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚,白操作了
  (3)rollback():取消当前事务
  (4)cursor():创建游标对象
           其中cursor游标对象又有如下属性和方法

                close():关闭此游标对象
           fetchone():得到结果集的下一行
           fetchmany([size = cursor.arraysize]):得到结果集的下几行
           fetchall():得到结果集中剩下的所有行
           excute(sql[, args]):执行一个数据库查询或命令
           excutemany(sql, args):执行多个数据库查询或命令

你可能感兴趣的:(工作学习,#python)