使用python连接操作数据库
--》下载配置python环境
--》推荐安装PyMySQL 库:PyMySQL 是一个纯Python 实现的MySQL 客户端操作库,支持事务、存储过程、批量执行等
使用命令:pip install pymysql
--》连接数据库脚本
1 # 导入模块 2 import pymysql 3 # 连接数据库 4 conn = pymysql.connect( 5 host='localhost', 6 port=3306, 7 user='root', 8 password='123456', 9 db='ceshi1', 10 charset='utf8' 11 ) 12 # 游标对象:用于执行查询和获取结果 13 cursor = conn.cursor() 14 15 sql = 'select * from student' 16 # execute()方法:执行sql语句、将结果从数据库获取到客户端 17 rows = cursor.execute(sql) 18 # 关闭指针,并释放资源 19 cursor.close() 20 # 关闭数据库连接,并释放资源 21 conn.close() 22 23 if rows >= 0: 24 print('数据库连接成功') 25 else: 26 print('数据库连接失败')
--》新增单条数据脚本
1 import pymysql 2 3 conn = pymysql.connect( 4 host='localhost', 5 port=3306, 6 user='root', 7 password='123456', 8 db='ceshi1', 9 charset='utf8' 10 ) 11 cursor=conn.cursor() 12 sql = "insert into student(studentNo,name_1,class) values('010','测试人员1','测试1班')" 13 rows = cursor.execute(sql) 14 # 提交当前事务 15 conn.commit() 16 cursor.close() 17 # 关闭数据库连接 18 conn.close()
--》新增多条数据脚本
1 # 新增多条executemany 2 import pymysql 3 # 连接数据库 4 conn = pymysql.connect( 5 host='localhost', 6 port=3306, 7 user='root', 8 password='123456', 9 db='ceshi1', 10 charset='utf8' 11 ) 12 cursor=conn.cursor() 13 # sql = 'INSERT INTO 表名 VALUES(%s,%s,%s)' 无论什么类型,都使用%s作为占位符 14 # rows=cursor.executemany(sql,param) 15 # param = ((username1, salt1, pwd1), (username2, salt2, pwd2), (username3, salt3, pwd3)) 16 sql = 'insert into student(studentNo,name_1,class) values(%s,%s,%s)' 17 param =(('011','多条新增1','新增1班'),('012','多条新增2','新增2班'),('013','多条新增3','新增3班')) 18 rows = cursor.executemany(sql,param) 19 # 提交当前事务 20 conn.commit() 21 cursor.close() 22 # 关闭数据库连接 23 conn.close()
--》使用pymysql.cursors.DictCursor类批量添加数据
1 import pymysql 2 # 连接数据库 3 conn = pymysql.connect( 4 host='localhost', 5 port=3306, 6 user='root', 7 password='123456', 8 db='ceshi1', 9 charset='utf8' 10 ) 11 # pymysql获取数据时提供了fetchone()和fetchall()函数来获取结果集,这俩种函数在处理大数据量时会消耗大量内存 12 # pymysql.cursors.DictCursor类,SSCursor游标类用来解决数据量大的问题 13 cursor=conn.cursor(pymysql.cursors.DictCursor) 14 param = [] 15 16 for i in range(1,100): 17 param.append([i,'批量1','批量']) 18 19 try: 20 sql = "insert into student(studentNo,name_1,class) values(%s,%s,%s)" 21 # 批量操作 22 cursor.executemany(sql,param) 23 conn.commit() 24 except Exception as e: 25 print(e) 26 conn.rollback()
--》修改单条数据脚本
1 # 导入模块 2 import pymysql 3 # 连接数据库 4 conn = pymysql.connect( 5 host='localhost', 6 port=3306, 7 user='root', 8 password='123456', 9 db='ceshi1', 10 charset='utf8' 11 ) 12 # 游标对象:用于执行查询和获取结果 13 cursor = conn.cursor() 14 15 sql = 'update student set class = %s where studentNo = %s' 16 # execute()方法:执行sql语句、将结果从数据库获取到客户端 17 rows = cursor.execute(sql,('修改数据','10')) 18 conn.commit() 19 # 关闭指针,并释放资源 20 cursor.close() 21 # 关闭数据库连接,并释放资源 22 conn.close()
--》修改多条数据脚本
1 # 导入模块 2 import pymysql 3 # 连接数据库 4 conn = pymysql.connect( 5 host='localhost', 6 port=3306, 7 user='root', 8 password='123456', 9 db='ceshi1', 10 charset='utf8' 11 ) 12 # 游标对象:用于执行查询和获取结果 13 cursor = conn.cursor() 14 15 sql = 'update student set class = %s where studentNo = %s' 16 rows = cursor.executemany(sql,[('多条数据1','10'),('多条数据2','11')]) 17 conn.commit() 18 # 关闭指针,并释放资源 19 cursor.close() 20 # 关闭数据库连接,并释放资源 21 conn.close()
--》删除数据脚本,与新增脚本大致相同,只需要修改sql语句即可
1 # 删除单条sql 2 sql='delete from student where class= %s' 3 rows=cursor.execute(sql,('10',))
1 # 删除多条sql 2 sql='delete from student where calss= %s' 3 rows=cursor.executemany(sql,[('11'),('12')])
--》查询数据脚本,与新增脚本大致相同,只需要修改sql语句即可
使用fetchone()、fetchall()、fetchmany函数,查询数据存在内存中
1 # 游标对象:用于执行查询和获取结果 2 cursor = conn.cursor(pymysql.cursors.DictCursor) 3 4 sql = 'select * from student' 5 rows = cursor.execute(sql) 6 # fetchone() 7 print(cursor.fetchone()) 8 print(cursor.fetchone()) 9 print(cursor.fetchone()) 10 # fetchall() 11 # print(cursor.fetchall())
# print(cursor.fetchmany(2)) 12 conn.commit() 13 # 关闭指针,并释放资源 14 cursor.close() 15 # 关闭数据库连接,并释放资源 16 conn.close()
fetchone()运行结果
fetchall()运行结果
fetchmany()运行结果
--》cursor游标移动脚本
1 # 第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动 2 cursor.scroll(1,mode='relative') # 相对当前位置移动 3 cursor.scroll(2,mode='absolute') # 相对绝对位置移动