PyMySQL 安装

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

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

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

  1. $ pip3 install PyMySQL

数据库连接

通过如下代码测试数据库连接

  1. #!/usr/bin/python3
  2.  
  3. import pymysql
  4.  
  5. # 打开数据库连接
  6. db = pymysql.connect("localhost","root","","mydb" )
  7.  
  8. # 使用 cursor() 方法创建一个游标对象 cursor
  9. cursor = db.cursor()
  10.  
  11. # 使用 execute() 方法执行 SQL 查询
  12. cursor.execute("SELECT VERSION()")
  13.  
  14. # 使用 fetchone() 方法获取单条数据.
  15. data = cursor.fetchone()
  16.  
  17. print ("Database version : %s " % data)
  18.  
  19. # 关闭数据库连接
  20. db.close()
  1. 下面通过实际操作来实现python操作mysql增删改查
    创建库ops 添加字段信息 username,email,age,sex
  1. 创建服务器server.py
  1. from http.server import HTTPServer, CGIHTTPRequestHandler
  2.  
  3. port = 8080
  4.  
  5. httpd = HTTPServer((liang, port), CGIHTTPRequestHandler)
  6. print("Starting simple_httpd on port: " + str(httpd.server_port))
  7. httpd.serve_forever()

通过本机ip访问本机服务器

查看本机 ip   linux下 命令行模式下输入ifconfig

打开浏览器输入服务器ip例如127.0.0.1:8080访问

创建html文件index.html 和 add.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <ul>
  9. <li><a href="/add.html">用户添加</a></li>
  10. <li><a href="/cgi-bin/list.py">用户列表</a></li>
  11. </ul>
  12. </body>
  13. </html>
  14.  
  15. <!--
  16. url
  17.  
  18. http://127.0.0.1:8080/cgi-bin/list.py?a=123&b=345
  19.  
  20. http://www.baidu.com:80/cgi-bin/list.py
  21.  
  22. 协议: http https ftp file
  23. ip 或 域名
  24. 端口: 8080 8090 (80 443)
  25. 路径: /cgi-bin/list.py
  26. 请求方式:
  27. GET 参数 在url地址后面 以?分割 开始携带参数,多个参数之间用 & 分割
  28. POST
  29.  
  30. -->
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>用户添加</title>
  6. </head>
  7. <body>
  8. <form action="/cgi-bin/add.py" method="post">
  9. 用户名: <input type="text" name="username"><br>
  10. 邮箱: <input type="text" name="email"><br>
  11. 年龄: <input type="text" name="age"><br>
  12. 性别: <input type="radio" name="sex" value="0">
  13. <input type="radio" name="sex" value="1">
  14. <br>
  15. <button>添加</button>
  16. </form>
  17. </body>
  18. </html>

在当前目录创建文件夹cgi-bin

进入文件夹

创建添加操作  add.py   注意如果无权限可以在当前文件夹打开终端 chmod 777 add.py 修改权限

  1. #! /usr/bin/env python3
  2. import cgi,pymysql
  3.  
  4. print('Content-type:text/html;charset=utf-8')
  5. print()
  6.  
  7. # 接受数据
  8. fs = cgi.FieldStorage()
  9. # 根据key接收值
  10. n = fs['username'].value
  11.  
  12. data = {}
  13.  
  14. for x in fs:
  15. # print(x)
  16. # print(fs[x].value)
  17. data[x] = fs[x].value
  18.  
  19. # 打开数据库连接
  20. db = pymysql.connect("127.0.0.1","root","","py9",charset='utf8')
  21.  
  22. # 使用 cursor() 方法创建一个游标对象 cursor
  23. cursor = db.cursor()
  24.  
  25. # 准备sql语句
  26. sql = 'insert into user(username,email,age,sex) values("{uname}","{uemail}",{uage},{usex})'.format(uname=data['username'],uemail=data['email'],uage=data['age'],usex=data['sex'])
  27.  
  28. # print(sql)
  29.  
  30. try:
  31. # 使用 execute() 方法执行 SQL
  32. cursor.execute(sql)
  33. # 提交执行
  34. db.commit()
  35.  
  36. print('<script>alert("添加成功");location.href="/cgi-bin/list.py";</script>')
  37. except:
  38. # 事务回滚
  39. db.rollback()
  40. print('<script>alert("添加失败");location.href="/add.html";</script>')
  41.  
  42. # 关闭数据库连接
  43. db.close()

创建查看操作文件 list.py

  1. #! /usr/bin/env python3
  2. import cgi,pymysql
  3.  
  4. print('Content-type:text/html;charset=utf-8')
  5. print()
  6.  
  7. # 链接数据库
  8.  
  9. # 打开数据库连接
  10. # db = pymysql.connect("127.0.0.1","root","123456","ops",charset='utf8', cursorclass=pymysql.cursors.DictCursor)
  11. db = pymysql.connect("127.0.0.1","root","","ops",charset='utf8')
  12.  
  13. # 使用 cursor() 方法创建一个游标对象 cursor
  14. cursor = db.cursor()
  15.  
  16. # 执行一个查询的语句
  17. sql = 'select * from stu'
  18.  
  19. cursor.execute(sql)
  20.  
  21. # 获取结果 fetchone() 每次获取一条数据
  22. # res = cursor.fetchone()
  23.  
  24. # fecthall() 获取全部结果
  25. res = cursor.fetchall()
  26. # print(res)
  27.  
  28. trs = ''
  29. for x in res:
  30. s = ''
  31. if x[4] == 1:
  32. s = '男'
  33. else:
  34. s = '女'
  35.  
  36. trs += '''
  37. <tr>
  38. <td>{id}</td>
  39. <td>{name}</td>
  40. <td>{email}</td>
  41. <td>{age}</td>
  42. <td>{sex}</td>
  43. <td>
  44. <a href="/cgi-bin/delete.py?id={id}"">删除</a>
  45. <a href="/cgi-bin/edit.py?id={id}">修改</a>
  46. </td>
  47. </tr>
  48. '''.format(id=x[0],name=x[1],email=x[2],age=x[3],sex=s)
  49.  
  50. h = '''
  51. <!DOCTYPE html>
  52. <html lang="en">
  53. <head>
  54. <meta charset="UTF-8">
  55. <title>用户列表</title>
  56. </head>
  57. <body>
  58. <center>
  59. <table>
  60. <tr>
  61. <th>ID</th>
  62. <th>用户名</th>
  63. <th>邮箱</th>
  64. <th>年龄</th>
  65. <th>性别</th>
  66. <th>操作</th>
  67. </tr>
  68. {}
  69. </table>
  70. </center>
  71.  
  72. </body>
  73. </html>
  74.  
  75. '''.format(trs)
  76.  
  77. print(h)
  78.  
  79. db.close()
  80.  
  81. # 把数据放到html中显示

创建修改  删除  编辑 文件 edit.py

  1. #! /usr/bin/env python3
  2. import cgi,pymysql
  3.  
  4. print('Content-type:text/html;charset=utf-8')
  5. print()
  6.  
  7. # 接受数据
  8. fs = cgi.FieldStorage()
  9. # 接收id
  10. uid = fs['id'].value
  11.  
  12. # 打开数据库连接
  13. db = pymysql.connect("127.0.0.1","root","","ops",charset='utf8')
  14.  
  15. # 使用 cursor() 方法创建一个游标对象 cursor
  16. cursor = db.cursor()
  17.  
  18. # 准备sql语句
  19. sql = 'select * from stu where id = '+uid
  20.  
  21. # 执行sql语句
  22. cursor.execute(sql)
  23.  
  24. # 获取结果
  25. uinfo = cursor.fetchone()
  26.  
  27. sex = ''
  28. if uinfo[4] == 0:
  29. sex ='''
  30. 性别: <input type="radio" name="sex" value="0" checked>女
  31. <input type="radio" name="sex" value="1">男
  32. '''
  33. else:
  34. sex ='''
  35. 性别: <input type="radio" name="sex" value="0" >女
  36. <input type="radio" name="sex" value="1" checked>男
  37. '''
  38.  
  39. html = '''
  40. <form action="/cgi-bin/update.py" method="post">
  41. <input type="hidden" name="id" value="{id}" />
  42. 用户名: <input type="text" name="username" value="{name}"><br>
  43. 邮箱: <input type="text" name="email" value="{email}"><br>
  44. 年龄: <input type="text" name="age" value="{age}"><br>
  45. {sex}
  46. <br>
  47. <button>修改</button>
  48. </form>
  49. '''.format(name=uinfo[1],email=uinfo[2],age=uinfo[3],sex=sex,id=uinfo[0])
  50.  
  51. print(html)
  52.  
  53. # 关闭数据库连接
  54. db.close()

创建修改操作 文件 update.py

  1. #! /usr/bin/env python3
  2. import cgi,pymysql
  3.  
  4. print('Content-type:text/html;charset=utf-8')
  5. print()
  6.  
  7. # 接受数据
  8. fs = cgi.FieldStorage()
  9.  
  10. data = {}
  11.  
  12. for x in fs:
  13. # print(x)
  14. # print(fs[x].value)
  15. data[x] = fs[x].value
  16.  
  17. # print(data)
  18.  
  19. # 打开数据库连接
  20. db = pymysql.connect("127.0.0.1","root","","ops",charset='utf8')
  21.  
  22. # 使用 cursor() 方法创建一个游标对象 cursor
  23. cursor = db.cursor()
  24.  
  25. # 准备sql语句
  26. sql = 'update stu set name="'+data['username']+'",email="'+data['email']+'",age='+data['age']+',sex='+data['sex']+' where id = '+data['id']
  27.  
  28. # print(sql)
  29.  
  30. try:
  31. # 使用 execute() 方法执行 SQL
  32. cursor.execute(sql)
  33. # 提交执行
  34. db.commit()
  35.  
  36. print('<script>alert("修改成功");location.href="/cgi-bin/list.py";</script>')
  37. except:
  38. # 事务回滚
  39. db.rollback()
  40. print('<script>alert("修改失败");location.href="/cgi-bin/list.py";</script>')
  41.  
  42. # 关闭数据库连接
  43. db.close()
  1. 创建删除操作文件 delete.py
  1. #! /usr/bin/env python3
  2. import cgi,pymysql
  3.  
  4. print('Content-type:text/html;charset=utf-8')
  5. print()
  6.  
  7. # 接受数据
  8. fs = cgi.FieldStorage()
  9.  
  10. uid = fs['id'].value
  11.  
  12. # print(uid)
  13.  
  14. # 打开数据库连接
  15. db = pymysql.connect("127.0.0.1","root","","ops",charset='utf8')
  16.  
  17. # 使用 cursor() 方法创建一个游标对象 cursor
  18. cursor = db.cursor()
  19.  
  20. # 准备sql语句
  21. sql = 'delete from stu where id='+uid
  22.  
  23. # print(sql)
  24.  
  25. try:
  26. # 使用 execute() 方法执行 SQL
  27. cursor.execute(sql)
  28. # 提交执行
  29. db.commit()
  30.  
  31. print('<script>alert("删除成功");location.href="/cgi-bin/list.py";</script>')
  32. except:
  33. # 事务回滚
  34. db.rollback()
  35. print('<script>alert("删除失败");location.href="/cgi-bin/list.py";</script>')
  36.  
  37. # 关闭数据库连接
  38. db.close()u

到这一步,python操作mysql增删改查功能都实现了

温馨提示

  • 如果您对本文有疑问,请在评论部分留言,我会在最短时间回复。
  • 如果本文帮助了您,也请评论关注,作为对我的一份鼓励。
  • 如果您感觉我写的有问题,也请批评指正,我会尽量修改。
  • 本文为原创,转载请注明出处。
  1.  

python3连接MySQL实现增删改查的更多相关文章

  1. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  2. jsp-2 简单的servlet连接mysql数据库 增删改查

    连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数 ...

  3. java连接mysql以及增删改查操作

    java连接数据库的代码基本是固定的,步骤过程觉得繁琐些,代码记起来对我来说是闹挺.直接上代码: (温馨提醒:你的项目提前导入连接数据库的jar包才有的以下操作 ) class DBConnectio ...

  4. JDBC之Java连接mysql实现增删改查

    使用软件:mysql.eclipse 链接步骤: 1.注册驱动 2.创建一个连接对象 3.写sql语句 4.执行sql语句并返回一个结果或者结果集 5.关闭链接(一般就是connection.stat ...

  5. java连接mysql数据库增删改查操作记录

    1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...

  6. python3操作mysql数据库增删改查

    #!/usr/bin/python3 import pymysql import types db=pymysql.connect("localhost","root&q ...

  7. 使用MySQL练习增删改查时因为版本问题出现连接错误

    使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...

  8. python2.7入门---操作mysql数据库增删改查

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口.Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: G ...

  9. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

随机推荐

  1. 转载-Springboot整合ehcache缓存

    转载:https://www.cnblogs.com/xzmiyx/p/9897623.html EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统 ...

  2. CodeForces 1082 E Increasing Frequency

    题目传送门 题意:给你n个数和一个c, 现在有一个操作可以使得 [ l, r ]区间里的所有数都加上某一个值, 现在问你c最多可以是多少. 题解: pre[i] 代表的是 [1,i] 中 c 的个数是 ...

  3. CodeForces 982 D Shark

    Shark 题意:一个研究员观察了一条鲨鱼n天的运动,然后这条鲨鱼他只会往前走,不会回到去过的地方,现在有一个k,,如果鲨鱼当天游过的距离 >= k, 代表的鲨鱼在这天会前往下一个地点,现在求鲨 ...

  4. Codeforces Round #391 C. Felicity is Coming!

    题目链接 http://codeforces.com/contest/757/problem/C 题意:给你n组数范围在1-m,可进行变换f(x)=y,就是将所有的x全变成y,最后 要满足变化后每组数 ...

  5. 快速幂 HDU 1061 Rightmost Digit *

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  6. ZOJ 3876 May Day Holiday

    As a university advocating self-learning and work-rest balance, Marjar University has so many days o ...

  7. A - 猜数字

    http://acm.hdu.edu.cn/showproblem.php?pid=1172 猜数字 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家 ...

  8. Redis真的那么好用吗

    Redis是什么 Redis是一个开源的底层使用C语言编写的key-value存储数据库.可用于缓存.事件发布订阅.高速队列等场景.而且支持丰富的数据类型:string(字符串).hash(哈希).l ...

  9. Python 基础 3 - 元组

    元组与列表区别 Python 元组与列表类似,不同之处在于列表可以修改,元组不可以修改 元组用小括号 () 定义,列表用方括号 [] 定义 元组不可修改,列表可修改 元组创建 只需要在小括号 () 内 ...

  10. 【学习笔记】第二章 python安全编程基础---正则表达式

    一.python正则表达式 定义:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式相匹配: 1.1RE模块:是python语言拥有全部的正则表达式功能的一个正则模块: 常见 ...