python程序中使用MySQL数据库


1、python中使用MySQL数据库需要借助第三方模块 pymysql(pip install pymysql)

2、pymysql本质是一个套接字客户端软件,在python 程序中使用pymysql对象链接服务器端

1 pymysql连接数据库

  1. #方式1:
  2. import pymysql
  3. #step1 链接
  4. conn = pymysql.connect(
  5. host="localhost",
  6. user="root",
  7. password="123",
  8. db="myschool",
  9. charset="utf8")
  10. cursor = conn.cursor() #step2 拿游标
  11. sql = "select * from class;" #step3 拼接sql语句
  12. res1 = cursor.execute(sql) #step4 调用execute()执行sql语句
  13. print(res1) #res不是查询的数据结果,而是查到数据的行数
  14. #step5 得到查询数据
  15. res2 = cursor.fetchone() #fetchone返回查到第一行数据,以元组的形式返回
  16. res3 = cursor.fetchmany(2) #fetchmany(n) 返回查到的接着n条记录
  17. res4 = cursor.fetchall() #fetchall() 返回剩下所有的数据记录
  18. cursor.close() #step6 #关闭游标
  19. conn.close() #step7 #关闭客户端链接

1、方式1清楚地列出了使用pymysql连接数据库的主要步骤

2、当使用查询操作时,查询的数据需要使用 fetchone()等函数获得,返回元组形式的结果

3、使用增、删、改操作时,涉及到拼接sql语句时的字符串引号问题,需要注意sql注入问题

4、此外,还有第二种连接方式,用字典进行连接参数的管理,这样子更优雅

  1. #方式2:
  2. import pymysql.cursors
  3. config = {
  4. 'host': '127.0.0.1',
  5. 'port': 3306,
  6. 'user': 'root',
  7. 'password': 'root',
  8. 'db': 'myschool',
  9. 'charset': 'utf8' }
  10. conn = pymysql.connect(**config) #step1 创建连接
  11. #cursor = conn.cursor() #step2 创建游标方式1
  12. with conn.cursor() as cursor: #创建游标方法2 不需要再手动关闭游标
  13. sql = "select * from class;" #step3 拼接sql语句
  14. cursor.execute(sql) #step4 执行sql语句
  15. res = cursor.fetchall() #step5 得到查询数据
  16. print(res)
  17. conn.close() #step6 关闭连接,释放内存

2 sql 注入

sql注入现象见:https://www.cnblogs.com/linhaifeng/articles/7525619.html#_label3

1、通过前端的表单提交的数据中携带sql语句, 欺骗服务器, 在后端对数据进行存储时, 执行恶意的sql语句

2、比如在使用pymysql操作数据库是使用字符串拼接生产sql语句, 就会出现sql注入漏洞

3、使用pymysql时, 不要自己拼接字符串, 而是使用execute方法, pymysql模块已经对提交的数据做了处理, 不会出
现sql注入

3 增删改查操作

1、查主要使用的是execute()和fetchone()系列函数

2、增删改主要使用的是execute()和commit()函数

  1. #示例1:查
  2. import pymysql
  3. conn = pymysql.connect(host="localhost",user="root",password="123",
  4. db="myschool",charset="utf8")
  5. cursor = conn.cursor()
  6. sql = "select * from student;"
  7. res = cursor.execute(sql)
  8. data = cursor.fetchall() #fetchone()\fetchmany(size)
  9. print(data)
  10. cursor.close()
  11. conn.close()

3、需要注意的一点是,不要自己拼接sql语句的字符串、使用在execute中传参的方式

  1. #示例2:增
  2. import pymysql
  3. conn = pymysql.connect(host="localhost",user="root",password="123",
  4. db="myschool",charset="utf8")
  5. cursor = conn.cursor()
  6. #方式1
  7. sql = "insert into student(sname,cid) values("tom",2);"
  8. res = cursor.execute(sql,)
  9. print(res) #打印sql影响成功的行数
  10. conn.commit() #提交后才发现表中插入记录成功
  11. #方式2
  12. sql = "insert into student(sname,cid) values(%s,%d);"
  13. res = cursor.execute(sql,("tom",2)) #参数放在元祖中
  14. print(res)
  15. conn.commit() #提交后才发现表中插入记录成功
  16. #方式3
  17. sql='insert into student(sname,cid) values(%s,%d);'
  18. res=cursor.executemany(sql,[("jack",3),("lili",4)]) #插入多行,列表
  19. print(res)
  20. conn.commit() #提交后才发现表中插入记录成功
  21. cursor.close()
  22. conn.close()
  23. #删、改的操作类似

4 pymysql使用总结

  1. 1pymysql.connect()参数说明
  2. host(str) #MySQL服务器地址
  3. port(int) #MySQL服务器端口,默认3306
  4. user(str) #用户名
  5. password(str) #密码
  6. db(str) #数据库名
  7. charset(str) #连接编码
  8. 2connection对象支持的方法
  9. cursor() #获得游标
  10. commit() #提交当前事务
  11. rollback() #回滚当前事务
  12. close() #关闭连接
  13. 3cursor对象支持的方法
  14. execute() #执行一个sql语句
  15. fetchone() #获取结果集中的一条记录
  16. fetchmany(size) #获取结果集中的多条记录,size指定条数
  17. fetchall() #获取结果集中的所有剩下所有条
  18. rowcount() #返回数据条数或影响行数
  19. rownumber #返回数据条数或影响行数
  20. close() #关闭游标对象

python程序中使用MySQL数据库的更多相关文章

  1. python项目中对mysql数据库进行配置,并进行连接测试

    在settings.py中配置mysql数据库进行相关配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME ...

  2. Java程序中实现 MySQL数据库的备份与还原

    案例代码: 数据库备份 //mysqldump -h端口号 -u用户 -p密码 数据库 > d:/test.sql --备份D盘 //备份 public static void dataBase ...

  3. shell中读写mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  4. Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...

  5. Windows10系统的Linux子系统中安装MySQL数据库心得

    后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...

  6. 【Python】Windows平台下Python、Pydev连接Mysql数据库

    Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是非常easy的. 首先,你要配置好Python的开发环境,详见<[Python]Wi ...

  7. 【mysql】备份篇2:使用java程序定期备份mysql数据库

    承接备份篇1, 在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务 在这一篇,备份使用java程序定期备份mysql数据库. 下面代码和程序思想给出: package com. ...

  8. 在 Android 应用程序中使用 SQLite 数据库以及怎么用

    part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...

  9. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

随机推荐

  1. #!/usr/bin/env bash和#!/usr/bin/bash的比较

    #!/usr/bin/env bash和#!/usr/bin/bash的比较 stackoverflow: http://stackoverflow.com/questions/16365130/th ...

  2. Mysql执行过程总结

    总分三个阶段:Sql的解析,执行和结果获取阶段. 如下图,展开相熟.

  3. nginx 之负载均衡 :PHP session 跨多台服务器配置

    公司一个项目单点压力越来越大,考虑到稳定性和降压,使用nginx做负载均衡,将请求分发到多个docker上去,这里记录下PHP多服务器间的会话session共享问题,解决方案是把session单独存在 ...

  4. spring boot中的声明式事务管理及编程式事务管理

    这几天在做一个功能,具体的情况是这样的: 项目中原有的几个功能模块中有数据上报的功能,现在需要在这几个功能模块的上报之后生成一条消息记录,然后入库,在写个接口供前台来拉取消息记录. 看到这个需求,首先 ...

  5. Windows下安装python2与python3以及分别对应的virtualenv

    第三次装python2与python3 除此之外还学会了如何在命令行复制代码1.单击右键2.菜单中选择标记3.按住左键选中需要复制的内容4.松开左键5.单击右键 全局中python版本为python2 ...

  6. __int64与long long、long的区别

    首先来看一看int.long.long long的取值范围 int                  所占字节数为:4                   表示范围为:-2147483648~2147 ...

  7. div 环形排列

    javascript-按圆形排列DIV元素(一)---- 分析 效果图: 一.分析图: 绿色边框内:外层的DIV元素,相对定位; 白色圆形框:辅助分析的想象形状; 白点:为白色圆形的圆心点,中心点,点 ...

  8. Java课堂 动手动脑6

    一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d;d=m;d=(Dog)m;d=c;c=(Cat)m; 先进行自我判断, 1.代码: class Mammal{} c ...

  9. 佳木斯集训Day1

    23333第一次写博客 其实在佳木斯集训之前我都已经两三个月没打代码了 在佳木斯的时候前几天真心手生,导致了前几次考试考的很差... D1的考试还是比较良心的,T1是一道大模拟,直接枚举最后几位是00 ...

  10. centos7之Python3.74安装

    安装版本:Python3.74 系统版本:centos7 系统默认安装Python2.7,保留. 安装/usr/bin/Python3 安装需要root权限. 安装Python3的准备工作: 1.安装 ...