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. REST-assured 2发送文字到接口

    获取token https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT #java package ...

  2. js读取解析JSON类型数据

    原文地址:http://www.ablanxue.com/prone_3691_1.html JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立 ...

  3. iOS Xcode 调试技巧

    一 NSLog调试 官方文档:Logs an error message to the Apple System Log facility. 即NSLog不是作为普通的debug log的,而是err ...

  4. Vue 封装js

    //封装模块化文件 新建的.js文件 var storage = { set(key, value) { localStorage.setItem(key, JSON.stringify(value) ...

  5. 部署mariadb数据库到linux(源码编译安装)

    各种库: apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake libncurses5-dev lib ...

  6. CSS border-right-style属性设置元素的右边框样式

    CSS border-right-style属性设置元素的右边框样式 边框的样式指的是边框的线条属性,指的是边框采用的是实线效果.短线效果还是其它的线条效果. border-right-style属性 ...

  7. Solr优化案例分析

    随着umc接入主机的数量越来越多,每天产生的syslog日志数量也在剧增, 之前一天产生的syslog数量才不 到1W,随着整个集团的网络设备不端接入,导致现在每天产生的syslog数量大概在180w ...

  8. python之路之装饰器

    一 装饰器进化之路1) import time def index(): start_time=time.time() time.sleep() print('welcome to index wor ...

  9. python写批量weblogic爆破脚本

    前言: 整理笔记的时候,发现了weblogic的攻击方法.心里打着算盘看看怎么写 个批量的弱口令爆破脚本.得出了以下思路 思路: 1.利用钟馗之眼采集weblogic的网站,将IP写入到txt 2.添 ...

  10. yii 执行sql

    sql         $sql = "SELECT ".join(',', $this->search_fields_channel)." FROM {{chan ...