pymysql 模块简单使用

目录

pymysql 模块简单使用

安装 pymysql 模块

使用 pymysql 连接数据库 并插入数据

  • 数据库的写入数据流程
1.导入模块
from pymysql import connect

2.Connection 对象 目的:用于建立代码与数据库的连接
创建连接对象 conn=connect(参数列表)

    参数host:连接的mysql主机,如果本机是'127.0.0.1'#如果不能用可以试下 host=localhost
    参数port:连接的mysql主机的端口,默认是3306
    参数database:数据库的名称
    参数user:连接的用户名
    参数password:连接的密码
    参数charset:通信采用的编码方式,推荐使用utf8
    
3.关闭连接 conn.close()

4.提交数据 conn.commit()

5.撤销数据 conn.rollback()

6.通过连接获取游标 cur = conn.cursor()返回Cursor对象,用于执行sql语句并获得结果

7.Cursor游标对象 目的: 执行sql语句

8.获取Cursor对象 cur = conn.cursor()

9.使用游标执行SQL语句 cur.execute(operation , [parameters])

10.执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete语句

11.获取结果集中的一条 cur.fetchone() 返回一个元组 

12.获取结果集中的一条 cur.fetchmany(2) 返回一个元组

13.获取结果集中的所有 cur.fetchall() 执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回

14.关闭游标 cur.close()

使用pymysql 插入数据

import pymysql    #导入模块
conn = pymysql.connect(host='127.0.0.1', user='root', password="318",database ='ftp')  
# host=localhost #也可以写,如果127.0.0.1不能用的话#  登录数据库
cur = conn.cursor()   # 数据库操作符 游标
cur.execute('insert into employee(emp_name,sex,age,hire_date) values ("凯歌","male",40,20190808)')
#()里填 sql 语句 注意'sql语句中的""引号要与最外为的引号区分开w'   
conn.commit()  #提交数据
cur.close()    #关闭游标
conn.close()   #断开数据库,释放资源
  • 通过cmd查询结果
  • 查询并获取结果
#fetchone()
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', password="318", database='ftp')
cur = conn.cursor() 
cur.execute('select * from employee where id > 10')
ret = cur.fetchone() #获取符合条件的第一个值的所有信息,返回结果类型为元组
print(ret)
cur.close()
conn.close()
##执行结果   
(11, '丁丁', 'female', 18, datetime.date(2011, 3, 12), 'sale', None, 1000.37, 402, 2)

#cur.fetchmany(数值) #()里的数值是多少,就返回几个符合条件的结果,返回结果类型为元组,
数值如果超过符合条件的的结果数量,返回会全部结果,不会报错
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', password="318", database='ftp')
cur = conn.cursor()  
cur.execute('select * from employee where id > 10')
ret = cur.fetchmany(2)#获取符合条件的两个结果,返回结果类型为元组
print(ret)
cur.close()
conn.close()
##执行结果
((11, '丁丁', 'female', 18, datetime.date(2011, 3, 12), 'sale', None, 1000.37, 402, 2), 
(12, '星星', 'female', 18, datetime.date(2016, 5, 13), 'sale', None, 3000.29, 402, 2))

#cur.fetchall()#找到所有符合条件的结果,返回结果类型为元组
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', password="318", database='ftp')
cur = conn.cursor()   
cur.execute('select * from employee where id > 10')
ret = cur.fetchall()
print(ret)
cur.close()
conn.close()
##执行结果
((11, '丁丁', 'female', 18, datetime.date(2011, 3, 12), 'sale', None, 1000.37, 402, 2), 
(12, '星星', 'female', 18, datetime.date(2016, 5, 13), 'sale', None, 3000.29, 402, 2), 
(13, '格格', 'female', 28, datetime.date(2017, 1, 27), 'sale', None, 4000.33, 402, 2),
 (14, '张野', 'male', 28, datetime.date(2016, 3, 11), 'operation', None, 10000.13, 403, 3), 
(15, '程咬金', 'male', 18, datetime.date(1997, 3, 12), 'operation', None, 20000.0, 403, 3), 
(16, '程咬银', 'female', 18, datetime.date(2013, 3, 11), 'operation', None, 19000.0, 403, 3), 
(17, '程咬铜', 'male', 18, datetime.date(2015, 4, 11), 'operation', None, 18000.0, 403, 3), 
(18, '程咬铁', 'female', 18, datetime.date(2014, 5, 12), 'operation', None, 17000.0, 403, 3), 
(20, '凯歌', 'male', 40, datetime.date(2019, 8, 8), None, None, None, None, None))

修改查询显示结果

  • 我们拿到的结果都是元组类型,不能让我们很好的感知数据,有什么方法能让数据更直观呢?
  • cur = conn.cursor(pymysql.cursors.DictCursor)
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', password="318", database='ftp')
cur = conn.cursor(pymysql.cursors.DictCursor)   #把返回结果改为,字典类型,key是字段,value是数据
cur.execute('select * from employee where id > 10')
ret = cur.fetchone()
print(ret['emp_name'], ret['sex'], ret['age'], ret)
cur.close()
conn.close()

#执行结果
丁丁 female 18 {'id': 11, 'emp_name': '丁丁', 'sex': 'female', 'age': 18, 'hire_date': datetime.date(2011, 3, 12), 
'post': 'sale', 'post_comment': None, 'salary': 1000.37, 'office': 402, 'depart_id': 2}

作 者:郭楷丰

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏品茗IT

Spring和Elasticsearch全文搜索整合详解

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsear...

18220
来自专栏菩提树下的杨过

pygame-KidsCanCode系列jumpy-part9-使用spritesheet

做过前端的兄弟应该都知道css sprite(也称css精灵),这是一种常用的减少http请求次数的优化手段。把很多小图拼成一张大图,只加载1次,然后用css定...

10550
来自专栏SAP Technical

为什么SAP Fiori活的如此精致

时间追溯到1992年,SAP的创始人们发布了R3版本,这是一个经典的出现。这个版本的系统提供包括所有业务领域的业务处理流程的集成的解决方案。

8710
来自专栏Creator星球游戏开发社区

CreatorPrimer|Creator 2.x渲染初探

Shawn之前只是从感性的一面了Cocos Creator 2.0在性能更好,增加部分3D效果的支持,同时API有一些变化。随着对Cocos Creator 2...

16520
来自专栏更流畅、简洁的软件开发方式

从后端到前端之Vue(二)写个tab试试水 1.    数据包2.    模板

  上一篇写了一下table,然后要写什么呢?当然是tab了。动态创建一个tab,里面放一个table,这样一个后台管理的基本功能(之一)就出来了。

7530
来自专栏front-end technology

前端如何更好的进行网站性能优化

12870
来自专栏菩提树下的杨过

pygame-KidsCanCode系列jumpy-part10-角色动画(上)

上一节学习如何利用spritesheet加载图片,但是player仍然是一张静态的图片,比较枯燥,我们要让它动起来!

7440
来自专栏学无止境

Python:Selenium 2:使用

WebDriver在将控制权返回给测试脚本之前,会一直等待到页面完全加载完毕,但如果页面使用了很多AJAX,WebDriver可能无法准确判断页面是否完全加载。

12220
来自专栏品茗IT

SpringBoot入门建站全系列(二十五)结合Spring-data-elasticsearch进行全文检索

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsear...

13920
来自专栏小蔚记录

Vue项目自动转换 px 为 rem,高保真还原设计图

因为rem单位是相对于根节点的字体大小的,所以通过设置根节点的字体大小可以动态的改变rem的大小。

17820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励