Mysql-python连接操作数据库

使用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') # 相对绝对位置移动 

猜你喜欢

转载自www.cnblogs.com/katyhudson/p/12610421.html