1、导入模块+创建连接

import pymysql

# 1、通过python去连接数据库
conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="admin123.",db="test_python_1",charset="utf8")

  

2、创建游标,通过游标就可以执行sql命令

# 2、创建游标
test_cursor = conn.cursor()

  

3、通过游标执行sql命令,插入一条数据

插入前的表的内容

执行命令

# 3、执行一个插入的命令
r = test_cursor.execute("insert into test(name,age) VALUES ('999',23)")

  

这里的r的值就受影响的行的数目

这里要注意,如果执行修改相关的命令,则必须要commit才能生效,commit操作由数据库连接的对象的操作,而不是通过游标去执行

# 4、提交数据
conn.commit()

  

查看表中的内容,已经多了一条数据

4、python的数据交互,由pymysql内部做参数传递

inp = input("请输入姓名:")
r = test_cursor.execute("insert into test(name,age) VALUES (%s,34)",inp)
# 这里可以用字符串拼接,也可以使用pymysql内部给我们做字符串拼接
# 字符串拼接是可以的,但是这里禁止操作的,这里会引起sql注入,所以不能这么使用 print(r)
# 这里的r的意思受影响的行数

我们看表中的数据已经更新

上面只传递了一个参数,如果有多个参数,该怎么传递呢?这里要传递一个元组进去

inp = input("请输入姓名:")
inp_age = input("请输入年龄:")
r = test_cursor.execute("insert into test(name,age) VALUES (%s,%s)",(inp,inp_age))

  

我们看到数据库的表中的数据已经更新

上面的例子我们只插入了一条数据,那么如果我们想一次插入多条数据该怎么弄呢?解决办法看下面的例子,要用excutemany命令来执行,然后通过列表或者元组把参数传递进去

user_info_list = [
("cui1",23),
("cui2",24),
("cui3",25)
] r = test_cursor.executemany("insert into test(name,age) values (%s,%s)",user_info_list)
print(r)

  

我们可以看到数据库的表中已经有数据更新

4、通过pymysql更新数据库中的内容

r = test_cursor.execute("update test set name = %s where age = 25","张国军")

print(r)

  

我们可以看到数据库的表中的内容已经更新

5、通过pymysql删除数据库表中的内容

r = test_cursor.execute("delete from test where age = 25")
print(r)

  

我们可以看到表中的数据已经更新

6、通过pymysql查询数据,如果是查数据,则不需要commit

r = test_cursor.execute("select * from test")
print(test_cursor.fetchone())
print(test_cursor.fetchone())
print(test_cursor.fetchmany(2))
print(test_cursor.fetchall())

  

我们注意数据库中的内容

我们看pymysql得到的结果

我们可以看到上面有一个指针的概念,第一条数据被取出来后,第二次在取数据,则就从第二条数据开始取,那么我们有没有办法移动指针呢?当然有,我们看下面的例子

7、移动指针

绝对的方式移动指针

r = test_cursor.execute("select * from test")
print(test_cursor.fetchone())
test_cursor.scroll(0,mode = "absolute")
# 这里的意思,absolute是绝对的意思,让指针回到0的位置 print(test_cursor.fetchone())

  

我们可以看到2次取的数据是一样的

相对的方式移动指针

r = test_cursor.execute("select * from test")
print(test_cursor.fetchone())
# test_cursor.scroll(0,mode = "absolute")
# 这里的意思,absolute是绝对的意思,让指针回到0的位置 test_cursor.scroll(2,mode="relative")
# 这里的意思,relative是相对的意思,相当当前的位置向下移动2个位置,这里如果是负数的话,是向上移动,如果是正数,则向下移动

  

我们注意数据库中的表的顺序

我们看下pymysql执行的结果

pymysql基本的使用方法的更多相关文章

  1. Python3.5 + django1.8.5 安装”import pymysql pymysql.install_as_MySQLdb()”的解决方法

    最近在学习Python,打算先看两个在线教程,再在github上找几个开源的项目练习一下,在学到"被解放的姜戈"时遇到django同步数据库时无法执行的错误,记录一下. 错误现象: ...

  2. 在pycharm中导入PyMysql出错,解决方法

    在写Django项目的时候,需要用到数据库中的数据,我们在pycharm中需导入  import PyMySQL; 如果没有该模块会报错,像我这样: 如果你的错误像我这样,那么你按照我的方法应该能搞好 ...

  3. Pymysql的常见使用方法

    cursor.fetchone()与cursor.fetchall()的区别: cursor.fetchone():只能显示一个数据 cursor.fetchall():才能显示查出来的所有数据  P ...

  4. pymysql安装和使用

    一.pymysql安装 安装mymysql前请确认python环境已经准备好,在之前的博文http://www.cnblogs.com/newzol/p/8682176.html有说明pythonwe ...

  5. 第二百八十一节,MySQL数据库-SQL注入和pymysql模块防止SQL注入

    MySQL数据库-SQL注入和pymysql模块防止SQL注入 SQL注入就是通过SQL语句绕开程序判断,获取到数据库的内容 下面以一个简单的程序登录SQL注入举例: 正常登录 1.数据库有一张会员表 ...

  6. MySQL 之Navicat Premium 12安装使用、pymysql模块使用、sql注入问题的产生与解决

    本文内容提要: Navicat Premium 12 的介绍.使用. pymysql模块的使用 sql注入问题的产生与解决 -------------------------------------- ...

  7. python爬虫入门七:pymysql库

    我们使用python爬取得到的数据,有时候会数据量特别大,需要存入数据库. 需要注意的是,MySQL是一种关系型数据库管理系统,利用MySQL可以对数据库进行操作,而MySQL并不是一个数据库. 而p ...

  8. MySQLdb和pymysql区别

    MySQLdb要快点,原因是这个是C写的,速度快 MySQLdb只支持Python2.x,还不支持3.x 可以用PyMySQL代替.安装方法:pip install PyMySQL 然后在需要的项目中 ...

  9. pymysql ,主键, 索引

    目录 一.pymysql模块的使用 1. 安装pymysql 2. 连接MySQL 3. sql注入问题 二.索引 1. 什么是索引 2. 索引有什么用 3. 索引的底层原理 4. 主键 5. MyS ...

随机推荐

  1. Linux之 AWK SED

    AWK系列#awk 中 NF表示取最后一列 NR表示取第几行 NR==3 表示取第三行[root@nodchen-db01-test ~]# free -m | awk 'NR==3 {print $ ...

  2. Spark学习笔记3:键值对操作

    键值对RDD通常用来进行聚合计算,Spark为包含键值对类型的RDD提供了一些专有的操作.这些RDD被称为pair RDD.pair RDD提供了并行操作各个键或跨节点重新进行数据分组的操作接口. S ...

  3. Docker集群管理(一)—— 基础docker+swarm+shipyard

    目的 学习docker的集群管理,摸索出高可用的docker微服务架构方案.本篇文章只初步的了解下swarm(docker新版已集成了swarm)的使用,了解docker的发现服务的基础方法(dock ...

  4. ETL编程模型(场景)

    使用场景: ETL是一个处理过程. 多个数据源之间进行数据同步 1:n:一对多同步数据 n:1:多个数据源到一个目的段 m;n:多个数据源多个目的段 ========================= ...

  5. 【RL前沿】深度强化学习的最新进展 by 2017.12.12

    作者:Volodymyr Mnih Google DeepMind科学家. 在Geoffrey Hinton的指导下完成了多伦多大学的机器学习博士学位. 在此之前,在Csab Szepesvari的指 ...

  6. navicate for mysql mac 含注册机 亲测可用

    百度网盘:https://pan.baidu.com/s/1hrXnRes

  7. 3.1_分类算法之k-近邻

    分类算法之k-近邻 k-近邻算法采用测量不同特征值之间的距离来进行分类 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 一个例子弄懂k-近 ...

  8. php内存回收机制的学习

    今天朋友去面试,回来问了一下怎么样,结果他说一脸懵逼,看来我们平时还是学习的太少了啊.于是比较好奇,果断问了一下都有哪些问题,朋友说第一个问题就是“描述PHP的垃圾回收机制”,我当时听了也是一脸茫然, ...

  9. 网站搜索引擎优化SEO策略及相关工具资源

    网站优化的十大奇招妙技 1. 选择有效的关键字: 关键字是描述你的产品及服务的词语,选择适当的关键字是建立一个高排名网站的第一步.选择关键字的一个重要的技巧是选取那些常为人们在搜索时所用到的关键字. ...

  10. quartz 定时任务的增删改

    参考:  https://blog.csdn.net/llmys/article/details/81069863