分享

Python中MySQL操作

 rcylbx 2018-11-22

        PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 安装 : 

    在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。

                    PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。

如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL

                    命令 : pip  install  pymysql

        注:  在cmd里面可以直接执行 , 记住联网   


         如果你的系统不支持 pip 命令,那就去百度吧,百度一下我知道 ! ! !

使用 pypython 的一系列操作   : 

  1. #请求MySQL数据库
  2. import pymysql
  3. # 打开数据库 创建连接
  4. #括号里面的参数分别包括: 主机地址 端口 用户 密码 数据库 编码-->存在中文的时候,连接需要添加charset='utf8',否则中文显示乱码。
  5. conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='python', db='myschool', charset='utf8')
  6. #主机地址也可以用 "127.0.0.1" 这个表示本机的意思
  7. # 创建游标
  8. cursor = conn.cursor()
  9. # 执行SQL,并返回收影响行数 使用 execute()  方法执行 SQL 语句
  10. effect_row = cursor.execute("select * from student")
  11. print(effect_row)
  12. #输出为15 该数据库共有十五行数据
  13. #获取数据
  14. #获取结果的第一行数据 '' fetchone() ''
  15. one = cursor.fetchone()
  16. print(one)
  17. '''
  18. 首先你要有数据库,其次 数据库里面要有数据
  19. 输出为:(10001, '123', '李文才', '女', 1, '13645667890', '地址不详', datetime.datetime(1994, 4, 12, 0, 0), None, None)
  20. '''
  21. # 获取剩余结果前n行数据 '' fetchmany() ''
  22. for i in cursor.fetchmany(3):
  23. print(i)
  24. '''
  25. 输出为:
  26. (10002, '123', '李斯文', '男', 1, '13645556793', '河南洛阳', datetime.datetime(1993, 7, 23, 0, 0), None, None)
  27. (10003, '123', '张萍', '女', 1, '13642345112', '地址不详', datetime.datetime(1995, 6, 10, 0, 0), None, None)
  28. (10004, '123', '韩秋洁', '男', 1, '13812344566', '北京市海淀区', datetime.datetime(1995, 7, 15, 0, 0), None, None)
  29. '''
  30. # 获取剩余结果所有数据
  31. all = cursor.fetchall()
  32. for j in all :
  33. print(j)
  34. '''
  35. (10005, '123', '张秋丽', '女', 1, '13567893246', '北京市东城区', datetime.datetime(1994, 1, 17, 0, 0), None, None)
  36. (10006, '123', '肖梅', '男', 2, '13563456721', '河北省石家庄市', datetime.datetime(1991, 2, 17, 0, 0), None, None)
  37. (10007, '123', '秦洋', '女', 2, '13056434411', '上海市卢湾区', datetime.datetime(1992, 4, 18, 0, 0), None, None)
  38. (10008, '123', '何睛睛', '男', 2, '13053445221', '广州市天河区', datetime.datetime(1997, 7, 23, 0, 0), None, None)
  39. (20000, '000', '王宝宝', '男', 2, '15076552323', '地址不详', datetime.datetime(1996, 6, 5, 0, 0), 'stu20000@163.com', None)
  40. (20010, '123', '何小华', '男', 2, '13318877954', '地址不详', datetime.datetime(1995, 9, 10, 0, 0), None, None)
  41. (30011, '123456', '陈志强', '女', 3, '13689965430', '地址不详', datetime.datetime(1994, 9, 27, 0, 0), None, None)
  42. (30012, '123456', '李露露', '男', 3, '13685678854', '地址不详', datetime.datetime(1992, 9, 27, 0, 0), None, None)
  43. (30013, '123456', '黄小平', '女', 3, '13994109788', '北京市', datetime.datetime(1992, 8, 13, 0, 0), None, None)
  44. (30014, '123456', '黄小平', '男', 3, '13994109788', '北京市', datetime.datetime(1992, 8, 13, 0, 0), None, None)
  45. (30015, '123456', '黄小平2', '女', 3, '13994109799', '北京市', datetime.datetime(1993, 8, 13, 0, 0), None, None)
  46. '''
  47. # 注: 或取是依次获取 或许剩下的
  48. # 提交,不然无法保存新建或者修改的数据
  49. conn.commit()
  50. # 关闭游标
  51. cursor.close()
  52. # 关闭连接
  53. conn.close()

关于默认获取的数据是元祖类型,如果想要或者字典类型的数据:

改变游标:       . cursor(cursor=pymysql.cursors.DictCursor)  

  1. #请求MySQL数据库
  2. import pymysql
  3. # 打开数据库 创建连接
  4. conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='python', db='myschool', charset='utf8')
  5. #游标设置为字典类型
  6. cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
  7. cursor.execute("select * from student")
  8. # 获取剩余结果所有数据
  9. one = cursor.fetchone()
  10. print(one)
  11. '''
  12. 输出为:
  13. {'studentNo': 10001, 'loginPwd': '123', 'studentName': '李文才', 'sex': '女', 'gradeId': 1, 'phone': '13645667890',
  14. 'address': '地址不详',
  15. 'bornDate': datetime.datetime(1994, 4, 12, 0, 0), 'email': None, 'identityCard': None}
  16. '''
  17. # 提交,不然无法保存新建或者修改的数据
  18. conn.commit()
  19. # 关闭游标
  20. cursor.close()
  21. # 关闭连接
  22. conn.close()

创建数据库: 

  1. #请求MySQL数据库
  2. import pymysql
  3. # 打开数据库连接
  4. conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='python', db='myschool', charset='utf8')
  5. # 使用 cursor() 方法创建一个游标对象 cursor
  6. cursor = conn.cursor()
  7. # 使用 execute() 方法执行 SQL,如果表存在则删除
  8. cursor.execute("drop table if exists myNEW")
  9. # 使用预处理语句创建表
  10. sql = "create table myNew ( `naem`CHAR(20) NOT NULL,`age` INT,`sex` CHAR(1))"
  11. #执行语句,创建数据库
  12. cursor.execute(sql)
  13. # 提交,不然无法保存新建或者修改的数据
  14. conn.commit()
  15. # 关闭游标
  16. cursor.close()
  17. # 关闭连接
  18. conn.close()

数据库插入操作 :

  1. #请求MySQL数据库
  2. import pymysql
  3. # 打开数据库连接
  4. conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='python', db='myschool', charset='utf8')
  5. # 使用 cursor() 方法创建一个游标对象 cursor
  6. cursor = conn.cursor()
  7. # SQL 插入语句
  8. sql = "insert into myNew(`name`,`age`,`sex`) values ('Mac', 20, '男')"
  9. try:
  10. # 执行sql语句
  11. cursor.execute(sql)
  12. # 提交到数据库执行
  13. conn.commit()
  14. except:
  15. # 如果发生错误则回滚
  16. conn.rollback()
  17. #对数据进行查找
  18. print(cursor.execute('select * from myNew'))
  19. print(cursor.fetchall())
  20. '''
  21. 输出为 --> 执行了俩次 执行几次插入几次
  22. 2
  23. (('Mac', 20, '男', None), ('Mac', 20, '男', None),
  24. '''
  25. # 提交,不然无法保存新建或者修改的数据
  26. conn.commit()
  27. # 关闭游标
  28. cursor.close()
  29. # 关闭连接
  30. conn.close()

数据库更新操作 :

  1. #请求MySQL数据库
  2. import pymysql
  3. # 打开数据库连接
  4. conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='python', db='myschool', charset='utf8')
  5. # 使用 cursor() 方法创建一个游标对象 cursor
  6. cursor = conn.cursor()
  7. # SQL 更新语句
  8. sql = "update myNew set `age` = 23 + 1 where `sex` = '男'"
  9. try:
  10. # 执行sql语句
  11. cursor.execute(sql)
  12. # 提交到数据库执行
  13. conn.commit()
  14. except:
  15. # 如果发生错误则回滚
  16. conn.rollback()
  17. #对数据进行查找
  18. print(cursor.execute('select * from myNew'))
  19. print(cursor.fetchall())
  20. '''
  21. 输出为 --> 执行了俩次 执行几次插入几次
  22. (('Mac', 24, '男', None)
  23. '''
  24. # 提交,不然无法保存新建或者修改的数据
  25. conn.commit()
  26. # 关闭游标
  27. cursor.close()
  28. # 关闭连接
  29. conn.close()

删除操作:

  1. #请求MySQL数据库
  2. import pymysql
  3. # 打开数据库连接
  4. conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='python', db='myschool', charset='utf8')
  5. # 使用 cursor() 方法创建一个游标对象 cursor
  6. cursor = conn.cursor()
  7. # SQL 删除语句
  8. sql = "delete from myNew WHERE age > 20"
  9. try:
  10. # 执行sql语句
  11. cursor.execute(sql)
  12. # 提交到数据库执行
  13. conn.commit()
  14. except:
  15. # 如果发生错误则回滚
  16. conn.rollback()
  17. #对数据进行查找
  18. print(cursor.execute('select * from myNew'))
  19. print(cursor.fetchall())
  20. '''
  21. 已经全部删除
  22. 0
  23. ()
  24. '''
  25. # 提交,不然无法保存新建或者修改的数据
  26. conn.commit()
  27. # 关闭游标
  28. cursor.close()
  29. # 关闭连接
  30. conn.close()

执行事务 : 

    对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

            commit()  方法游标的所有更新操作

            rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

  1. try:
  2. # 执行SQL语句
  3. cursor.execute(sql)
  4. # 向数据库提交
  5. db.commit()
  6. except:
  7. # 发生错误时回滚
  8. db.rollback()

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约