欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pymysql 模块简单使用

程序员文章站 2022-06-09 13:48:01
pymysql 模块简单使用 [TOC] 安装 pymysql 模块 pip 包工具安装 pymysql 参考 https://www.runoob.com/w3cnote/python pip install usage.html pycharm 安装 教程 使用 pymysql 连接数据库 并插 ......

目录

pymysql 模块简单使用

安装 pymysql 模块

  • pip 包工具安装 pymysql 参考

  • pycharm 安装 教程

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查询结果

pymysql 模块简单使用

  • 查询并获取结果
#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}