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):执行多个数据库查询或命令