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

版权声明:本文为katyhudson原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/katyhudson/p/12610421.html