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. jpgraph中文使用手册之文本和字体控制教程

    摘要:在之前的php jpgraph安装配置教程中已介绍过jpgraph字体的安装与配置方法,jpgraph类库中字体和文本的使用是非常重要的,jpgraph既可以控 制文本的旋转.对齐方式.字体大小 ...

  2. git log --author详解,这个是个模糊匹配

    git log --author=authorname --author=<pattern>, commits whose author matches any of the given ...

  3. git 上传本地代码到github 服务器

    git init git add . (所有文件用 点表示) git commit -m "注释语句" git remote add origin https://github.c ...

  4. /PROC/MEMINFO之谜

    网站转自:http://linuxperf.com/?p=142 非常技术的网站,够看上一阵子的(一篇文章) /proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”fre ...

  5. 并发基础(八) java线程的中断机制

    文章转载自 详细分析Java中断机制 1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时--都需要通过一个线程去取消另一个线程正在执行的任 ...

  6. Jenkins邮件扩展(Email Extension插件 Windows环境)

    1.Jenkins ver. 2.107.3版本自带Email Extension插件启动后即可看到系统设置里的 Extended E-mail Notification ,如果没有请安装 2.安装过 ...

  7. IntelliJ IDEA创建maven web项目(IDEA新手适用)

      步骤一:首先先创建一个project,在这里就是创建一个maven的工作空间 步骤二:按照下面的步骤操作就可以了,最后next 首先,选择左边的maven 然后在右边Creater from ar ...

  8. Mysql数据库查询数据文件大小

    参考网站:https://zhidao.baidu.com/question/201227796936321525.html 用SQL命令查看Mysql数据库大小 要想知道每个数据库的大小的话,步骤如 ...

  9. bootstrapValidator针对设置赋值进行验证

    bootstrapValidator在提交的时候可以进行验证,但是对于点击输入框进行赋值的时候验证失效. 解决方法: 然后在设置change方法方可解决.

  10. framework4.0 IIS配置支持ashx

    framework4.0 https://www.microsoft.com/zh-cn/download/details.aspx?id=17718 IIS添加对ashx文件的支持 http://w ...