Python之Pymysql模块操作MySQL增删改查

 

Python3 MySQL 数据库连接 - PyMySQL 驱动

PyMySQL 连接数据库,实现增删改查

什么是 PyMySQL?

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

安装PyMySQL

$ pip install PyMySQL

 

1、创建数据库连接

在操作mysql之前,首先要与mysql建立连接

conn=pymysql.connect(host="mysql域名/ip",user="用户名",password="密码",db="库名",port=端口号3306,charset=‘utf-8’)

2、创建游标对象

当游标建立之时,就自动开始了一个隐形的数据库事务

#使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()

3、执行sql语句

sql=“select * from user”

 cursor.execute(sql) 或  cursor.execute(“select * from user”)

4、提交

conn.commit()

5、回滚

conn.rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务

5、关闭游标

cursor.close()

6、关闭数据库连接

conn.close()

 

 

 

创建数据库连接


import pymysql
#创建数据库连接
db=pymysql.connect(host="数据库域名/ip",user="账号",password="密码",db="库名",port=3306)
print(db)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
print(cursor)
#使用 execute() 方法执行 SQL 查询
cursor.execute("select * from user where mobile")
# 使用 fetchone() 方法.
results1= cursor.fetchone()#获取单条(第1条)数据
results2=cursor.fetchmany(3)#获取3条(2、3、4)数据
results3=cursor.fetchall() #获取全部(5-全部)数据
print(results3)
#关闭游标,又从起始位置开始
cursor.close()
# 关闭数据库连接
db.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x00000161DDC90E80>
<pymysql.cursors.Cursor object at 0x00000161DF8E44E0>数据省略Process finished with exit code 0

创建数据库表

#!/usr/bin/python3import pymysql# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (FIRST_NAME  CHAR(20) NOT NULL,LAST_NAME  CHAR(20),AGE INT,  SEX CHAR(1),INCOME FLOAT )"""cursor.execute(sql)# 关闭数据库连接
db.close()

数据库插入操作


import pymysql
#创建数据库连接
db=pymysql.connect(host="",user="",password="",db="ck",port=3306)
print(db)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
print(cursor)
sql="INSERT INTO j.store (id,company_id,title,address,district,lon,lat,remark,updated_at,created_at,deleted_at) VALUES ('195', '61', '虹桥路店', '虹桥路1027号', '', '0.000000', '0.000000', NULL, '2019-03-15 14:54:29', '2019-03-15 14:54:29', NULL)"#写法2
#cursor.execute('insert into stu(id,name,age) values(%s,%s,%s)',('201611001','xiaoqian',20))#插入多条数据,具体数据用列表来保存,列表元素是元组
#cur.executemany('insert into stu(id,name,age) values(%s,%s,%s)',[('201611001','xiaoqian',20),('201611002','smile',21),('201611003','wood',23)])try:#执行插入sqlcursor.execute(sql)# 提交到数据库执行db.commit()
except:# 如果发生错误则回滚db.rollback()
# 关闭数据库连接
db.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x00000295DEA90EB8>
<pymysql.cursors.Cursor object at 0x00000295E06B44E0>Process finished with exit code 0

 

 

数据库查询操作

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall(): 接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行

    1、单条sql语句查询

sql = "SELECT * FROM EMPLOYEE  WHERE INCOME > %s" % (1000)

 

    2、多条sql语句查询

  • import pymysql
    #创建数据库连接
    db=pymysql.connect(host="",user="",password="",db="",port=3306)
    print(db)
    #使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    print(cursor)
    sql="select * from c.user limit 10"
    try:#执行sql语句cursor.execute(sql)#查询所有记录results=cursor.fetchall()print(results)#打印10条数据for row in results:print(row)#循环打印每条数据user_id=row[0]#第1列字段mobile=row[1]#第2列字段print(user_id,mobile)#循环打印第1、2列字段
    except:print('查询失败')
    #关闭数据库连接
    db.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
    <pymysql.connections.Connection object at 0x0000018E8BEDB748>
    <pymysql.cursors.Cursor object at 0x0000018E8DB34550>
    ((2, '13888888888', '新', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (75, '13888888888', '小', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (139, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554088503, 0, 2, 0, datetime.datetime(2019, 4, 1, 11, 11, 37), datetime.datetime(2019, 4, 1, 11, 15, 3), None), (190, '13888888888', '大', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (192, '13888888888', '磊', '33010019900530156x', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 13888888888, 0, 2, 0, datetime.datetime(2019, 3, 29, 17, 26, 56), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (199, '13888888888', '一', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 2, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 16, 8, 3), None), (202, '13888888888', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (203, '13888888888', '四', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (230, '13888888888', '大', '320382199303242813', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1554291602, 0, 2, 0, datetime.datetime(2019, 4, 3, 19, 37, 20), datetime.datetime(2019, 4, 3, 20, 11, 18), None), (278, '13700000003', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554171902, 0, 2, 0, datetime.datetime(2019, 4, 2, 10, 24, 35), datetime.datetime(2019, 4, 2, 10, 25, 8), None))
    (2, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
    2 13888888888
    (75, '13888888888', '马', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
    75 18817893609
    (139, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554088503, 0, 2, 0, datetime.datetime(2019, 4, 1, 11, 11, 37), datetime.datetime(2019, 4, 1, 11, 15, 3), None)
    139 13888888888
    (190, '13888888888', '徐', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
    190 13888888888
    (192, '13888888888', '王', '330', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1553851802, 0, 2, 0, datetime.datetime(2019, 3, 29, 17, 26, 56), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
    192 13888888888
    (199, '13888888888', '李', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 2, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 16, 8, 3), None)
    199 13888888888
    (202, '13888888888', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
    202 13888888888
    (203, '13888888888', '四', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
    203 13888888888
    (230, '13888888888', '小', '320', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1554291602, 0, 2, 0, datetime.datetime(2019, 4, 3, 19, 37, 20), datetime.datetime(2019, 4, 3, 20, 11, 18), None)
    230 13888888888
    (278, '13700000003', '王', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554171902, 0, 2, 0, datetime.datetime(2019, 4, 2, 10, 24, 35), datetime.datetime(2019, 4, 2, 10, 25, 8), None)
    278 13700000003Process finished with exit code 0

     

数据库更新操作

sql语句

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

sql="update c.user set sex=2 where mobile=18221124104"

cur.execute('update stu set age = %s where id = %s',(25,'201611006'))

 

import pymysql
#创建数据库连接
conn=pymysql.connect(host="",user="qa",password="Qa",db="c",port=3306)
print(conn)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
print(cursor)
sql="update c.user set sex=2 where mobile=18221124104"
try:cursor.execute(sql)conn.commit()
except:conn.rollback()
conn.close()C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x000002C281555A20>
<pymysql.cursors.Cursor object at 0x000002C2831944A8>Process finished with exit code 0

 

删除操作

#!/usr/bin/python3import pymysql# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )# 使用cursor()方法获取操作游标 
cursor = db.cursor()# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:# 执行SQL语句cursor.execute(sql)# 提交修改db.commit()
except:# 发生错误时回滚db.rollback()# 关闭连接
db.close()

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python计算程序运行时间

import time if __name__ __main__:time_starttime.time()#程序位置time_endtime.time()print(花费时间,time_end-time_start) #此处单位为秒

Python之日志处理(logging模块)详解

logging模块简介 logging模块是Python内置的标准模块&#xff0c;主要用于输出运行日志&#xff0c;可以设置输出日志的等级、日志保存路径、日志文件回滚等&#xff1b;相比print&#xff0c;具备如下优点 1、可以通过设置不同的日志等级&#xff0c;在release版本中只输出重…

神秘的安全测试思考案例(一)

定义&#xff1a;安全测试是在软件产品开发基本完成时&#xff0c;验证产品是否符合安全需求定义和产品质量标准的过程。 概念&#xff1a;安全测试是检查系统对非法侵入渗透的防范能力。 准则&#xff1a;理论上来讲&#xff0c;只要有足够的时间和资源&#xff0c;没有无法进…

STL Map学习总结

1、 Map是关联容器&#xff0c;以键值对的形式进行存储&#xff0c;方便进行查找&#xff0c;关键词起到索引的作用&#xff0c;值则表示与索引相关联的数据&#xff0c;以红黑树的结构实现&#xff0c;插入删除等操作都可以在O(log n)时间内完成 2、它的特点是增加和删除节点…

【功能业务篇】APP获取用户定位、传参经纬度思考

常用的三种定位方式有&#xff1a;基于GPS定位、基于基站地位、基于wifi定位。 1、基于GPS定位&#xff1a; GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的。 GPS定位最大的优点就是其定位精确度高(一般误差在10m内),无网络也能用;缺点就是耗电高、定位慢、室…

cmd运行python程序

先cd到当前目录&#xff0c;然后python XXX.py

《业务测试》手机号码格式

一、手机号码格式测试 正确手机号格式 13333333333 14444444444 15555555555 16666666666 17777777777 18888888888 19999999999 错误的手机号格式 1333333333 10位手机号 10000000000 第2位为0 11111111111 第2位为1 12222222222 第2位为2 2333…

mysql 四种存储引擎

前言 数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能&#xff0c;使用不同的存储引擎&#xff0c;还可以 获得特定的功…

Android ADB调试之无线连接设备

Android无线调试 一、数据线连接手机和电脑&#xff08;首次设置需数据线连接&#xff09;&#xff0c;开启开发者模式和USB调试&#xff0c;确保手机和电脑已连接 cmd下执行adb devices 显示上图1&#xff0c;说明已连接 二、华为手机设置 1、开发人员选项 2、USB调试 3、…

python守护线程

1、守护子进程 主进程创建守护进程 其一&#xff1a;守护进程会在主进程代码执行结束后就终止其二&#xff1a;守护进程内无法再开启子进程,否则抛出异常&#xff1a;AssertionError: daemonic processes are not allowed to havechildren 注意&#xff1a;进程之间是互相独立…

【Python实战】使用python计算多种类型到期还款日

一般金融产品的账务测试时&#xff0c;我们会接触到还款方式&#xff0c;到期还款日等概念。 在自动化测试或者脚本使用中&#xff0c;我们需要动态的生成到期还款日去进行账务测试&#xff0c;这篇文章主要介绍了常见的几种到期还款日计算方式。 一、固定期限&#xff08;比如…

初识python多线程

1) 在python中如何创建一个线程对象&#xff1f; 如果你要创建一个线程对象&#xff0c;很简单&#xff0c;只要你的类继承threading.Thread&#xff0c;然后在__init__里首先调用threading.Thread的__init__方法即可&#xff1a; import threading class MyThread(threading…

Fiddler抓包工具之Filters(过滤器)进行会话过滤

一、设置User Fiters启用 未勾选Use Filters&#xff0c;未启用此功能&#xff1b;已勾选Use Filters&#xff0c;已启用此功能 二、Action设置 Run Filterset now :马上执行过滤&#xff0c;立即生效过滤 Load Filterset&#xff1a; 加载本地过滤文件到fiddler Save Filt…

【pyQT5】Python3+pyQT5开发环境安装与配置

在PyQt中编写UI界面可以直接通过代码来实现&#xff0c;也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构&#xff0c;其实现了视图和逻辑的分离&#xff0c;从而实现了开发的便捷。 Qt Designer中的操作方式十分灵活&#xff0c;其通过拖拽的方式放置控件可以随时…

C++运行界面一闪而过解决

#include<iostream> #include <stdlib.h> #切记导入这个头文件 using namespace std;int main() { cout << "Hello Word"<<endl; system("pause"); #让界面不是一闪而过 return 0; } 注意&#xff1a;VS2012以上版本才支持C 11…

【TensorFlow】TensorFlow是什么?

TensorFlow 是一个开源的、基于 Python 的机器学习框架&#xff0c;它由 Google 开发&#xff0c;并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用&#xff0c;是目前最热门的机器学习框架。 除了Python&#xff0c;TensorFlow 也提供了 C/C、Java、Go、…

TPS、QPS、系统吞吐量、并发用户数区别及性能术语的理解

一、QPS/TPS QPS&#xff1a;Queries Per Second意思是“每秒查询率”&#xff0c;是一台服务器每秒能够相应的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS&#xff1a;是TransactionsPerSecond的缩写&#xff0c;也就是事务数/…

js设置了location.href不跳转问题

今天碰到一个问题&#xff0c;用JS设置了location.href就是不跳转的问题。代码如下&#xff1a; $(‘#gofriendtab’).on(‘click’, function() { location.href “XXXXX”; }) 测试运行了一下&#xff0c;发现确实执行了这个代码&#xff0c;但是…

【TensorFlow】Win7+Anaconda+python3.6+Tensorflow1.9安装教程

相关链接 官网&#xff1a;https://tensorflow.google.cn/ github&#xff1a;https://github.com/tensorflow/tensorflow 中文社区网&#xff1a;http://www.tensorfly.cn/ 安装说明 平台&#xff1a;windows 7 Anaconda版本&#xff1a;4.6.14 python版本&#xff1a;3.6.…

【Jmeter篇】如何利用Jmeter配置元件计数器、随机变量制造批量数据和变量参数化?

一、计数器 1、线程组-配置元件-计数器 2、功能介绍 starting value&#xff1a;给定计数器的起始值、初始值&#xff0c;第一次迭代时&#xff0c;会把该值赋给计数器 递增(Increment)&#xff1a; 每次迭代后&#xff0c;给计数器增加的值 最大值(Maximum) &#xff1a;…