第二百七十九节,MySQL数据库-pymysql模块操作数据库

MySQL数据库-pymysql模块操作数据库

pymysql模块是python操作数据库的一个模块

 

connect()创建数据库链接,参数是连接数据库需要的连接参数
使用方式:
  模块名称.connect()
  参数:
  host=数据库ip
  port=数据库端口
  user=数据库用户名
  passwd=数据库密码
  db=数据库名称

  charset=数据库编码


cursor()创建数据库操作游标,无参
使用方式:
  游标变量.cursor()


execute()操作数据库,参数1 sql语句,参数2 字符串占位符变量
使用方式:
  游标变量.execute()

execute()操作数据库会返回,操作数据库后影响的行数,我们可以以此判断是否操作成功


commit()提交数据到数据库,无参
使用方式:
  创建数据库链接变量.commit()


close()关闭游标
使用方式:
  游标变量.close()


close()关闭数据库
使用方式:
  创建数据库变量.close()

向数据库添加一条数据

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi')
# 创建游标
cursor = conn.cursor()# 执行SQL,并返回收影响行数
effect_row = cursor.execute("INSERT INTO db1(yhm,mim) VALUES('adc8868','279819')") #添加一条数据
print(effect_row)   #返回影响行数# 提交,不然无法保存新建或者修改的数据
conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

execute(sql语句%s,(占位符变量))执行sql语句时的占位符使用

execute()操作一条数据

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi')
# 创建游标
cursor = conn.cursor()# 执行SQL,并返回收影响行数
effect_row = cursor.execute("INSERT INTO db1(yhm,mim) VALUES(%s,%s)",('adc279819',279819)) #添加一条数据
print(effect_row)   #返回影响行数# 提交,不然无法保存新建或者修改的数据
conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

executemany(sql语句,[(占位符变量),(占位符变量)])执行sql语句时的占位符使用

executemany()操作多条数据

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi')
# 创建游标
cursor = conn.cursor()# 执行SQL,并返回收影响行数
effect_row = cursor.executemany("INSERT INTO db1(yhm,mim) VALUES(%s,%s)",[('a1',123),('a2',456),('a3',789)])
print(effect_row)   #返回影响行数# 提交,不然无法保存新建或者修改的数据
conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

查询数据库数据

注意:操作数据库的增、删、改都需要commit()提交数据到数据库,而查询是不需要commit()的

fetchall()获取游标查询数据库里的数据,返回元祖
使用方式:
  游标变量.fetchall()

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor()# 执行SQL,并返回收影响行数
effect_row = cursor.execute("SELECT id,yhm,mim FROM db1")
shuju = cursor.fetchall()   #获取游标里的数据
print(shuju)
# 提交,不然无法保存新建或者修改的数据
# conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

 

 

查询数据库内容时更改游标返回字典类型数据【推荐】

返回字典类型将数据库表的列(字段)作为键返回

默认查询数据时游标返回的元祖类型,如果想返回字典类型就需要设置游标

cursor=pymysql.cursors.DictCursor设置游标返回字典类型数据,当做参数写在execute()里,execute(cursor=pymysql.cursors.DictCursor)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行SQL,并返回收影响行数
effect_row = cursor.execute("SELECT id,yhm,mim FROM db1")
shuju = cursor.fetchall()   #获取游标里的数据
print(shuju)# 提交,不然无法保存新建或者修改的数据
# conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

fetchone()获取游标里第一条数据,如果多次执行fetchone()就依次获取数据
使用方式:
  游标变量.fetchone()

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行SQL,并返回收影响行数
effect_row = cursor.execute("SELECT id,yhm,mim FROM db1")
shuju = cursor.fetchone()   #获取游标里第一条数据
print(shuju)# 提交,不然无法保存新建或者修改的数据
# conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

fetchmany()获取游标里,指定条数据,参数是要获取数据的条数
使用方式:
  游标变量.fetchmany(3)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行SQL,并返回收影响行数
effect_row = cursor.execute("SELECT id,yhm,mim FROM db1")
shuju = cursor.fetchmany(3)   #获取游标里,指定条数据
print(shuju)# 提交,不然无法保存新建或者修改的数据
# conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

移动游标里数据指针获取对应数据

scroll(1,mode='relative')相对当前位置移动
  使用方式:
  游标变量.scroll(1,mode='relative')
  第一个参数正数相对当前位置向下移动数值对应指针,第一个负数相对当前位置向上移动数值对应指针

scroll(2,mode='absolute')相对绝对位置移动
  使用方式:
  游标变量.scroll(2,mode='absolute')
  将指针位置移动到第一个参数数值对应指针

相对当前位置移动获取数据mode='relative'

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行SQL,并返回收影响行数
effect_row = cursor.execute("SELECT id,yhm,mim FROM db1")
shuju = cursor.fetchone()   #获取游标里第一条数据,指针在第一个位置
shuju = cursor.fetchone()   #指针在第二个位置
shuju = cursor.fetchone()   #指针在第三个位置
print(shuju)                #打印应该是第三条
cursor.scroll(-2,mode='relative') #调整指针,相对当前位置向上移动2位
shuju = cursor.fetchone()   #指针第二位
print(shuju)
# 提交,不然无法保存新建或者修改的数据
# conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

相对绝对位置移动mode='absolute'

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行SQL,并返回收影响行数
effect_row = cursor.execute("SELECT id,yhm,mim FROM db1")
shuju = cursor.fetchone()   #获取游标里第一条数据,指针在第一个位置
shuju = cursor.fetchone()   #指针在第二个位置
shuju = cursor.fetchone()   #指针在第三个位置
print(shuju)                #打印应该是第三条
cursor.scroll(3,mode='absolute') #调整指针,相对绝对位置移动3位
shuju = cursor.fetchone()   #指针第四位
print(shuju)
# 提交,不然无法保存新建或者修改的数据
# conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

 

添加数据库时获取到添加数据的自增id

lastrowid获取添加数据时的自增id
使用方式:
  游标变量.lastrowid
注意:如果是添加的多条数据,获取到的自增id是最后一条的自增id

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql# 创建连接
"""
host=数据库ip
port=数据库端口
user=数据库用户名
passwd=数据库密码
db=数据库名称
charset=数据库编码
"""
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='279819', db='cshi',charset='utf8')
# 创建游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行SQL,并返回收影响行数
effect_row = cursor.execute("INSERT INTO db1 (yhm,mim) VALUES (%s,%s)",('bb3',8889))
zzid = cursor.lastrowid  #获取添加数据时的自增id
print(zzid) #打印自增id
# 提交,不然无法保存新建或者修改的数据
conn.commit()# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 

转载于:https://www.cnblogs.com/adc8868/p/6942542.html

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

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

相关文章

宇航员能用GPS在月球上导航吗?美国宇航局的科学家给出了肯定答案

Illustration: NASA来源:IEEE电气电子工程师如果宇航员按照美国宇航局Artemis计划登录月球,他们的主要目标之一就是在月球南极附近的陨石坑中挖冰,这些冰层不仅对水有用,而且可以分解成氢和氧。但它们需要导航,才能精确…

猴子会照镜子吗?科学家的这一研究意义非凡!

来源:中国经济大讲堂本期提要在《中国经济大讲堂》演讲中,中国科学院院士、中科院脑科学与智能技术卓越创新中心学术主任蒲慕明指出,自闭症患者、严重脑疾病可能伴有自我意识损伤的现象。我们通过各种训练方法,可以使猴子学会识别…

Science | 闵明玮等揭示细胞如何做出命运决定

来源:BioArt细胞命运决定我们体内的每个细胞都会面临着一个关乎命运的选择:要不要复制产生一个新的细胞。这个重大选择关系到人体发育和维持稳态等生理过程,因此它的失调也与癌症等疾病的发生发展有着密切联系。在人体中,大部分的…

图解机器学习:人人都能懂的算法原理

来源:机器学习研究组订阅号算法公式挺费神,机器学习太伤人。任何一个刚入门机器学习的人都会被复杂的公式和晦涩难懂的术语吓到。但其实,如果有通俗易懂的图解,理解机器学习的原理就会非常容易。本文整理了一篇博客文章的内容&…

Python 什么时候会被取代?

来源:CSDN译者 | 弯月,责编 | 郭芮以下是译文: Python经过了几十年的努力才得到了编程社区的赏识。自2010年以来,Python得到了蓬勃发展,并最终超越了C、C#、Java和JavaScript。但是,这种趋势将持续到什么时…

Android开发艺术探究Note

第一章:Activity的生命周期和启动模式 生命周期onPause表示activity正在停止,onPaus必须先执行完(栈顶的activity),新的activity的onResume才会执行。onStop表示activity即将停止(透明不会执行)…

烧脑:宇宙时空结构是量子纠错码

来源:Future远见现在越来越多的理论物理学家开始相信,时空起源于纠缠的量子信息。粗略地讲,时空中最重要的“相邻”概念,可以认为是起源于量子纠缠:有纠缠就是相邻,没有纠缠就是不相邻。如果你相信这一观念…

李德毅院士:通用人工智能十问

来源:学术头条共识:智能是学习的能力,以及解释、解决问题的能力;人工智能是脱离生命体的智能,是人类智能的体外延伸;通用人工智能通过不断学习,积累本领,进化成长,能够面…

咸阳高考成绩查询2021,2021咸阳市地区高考成绩排名查询,咸阳市高考各高中成绩喜报榜单...

距离2018年高考还有不到一个月的时间了,很多人在准备最后冲刺的同时,也在关心高考成绩。2018各地区高考成绩排名查询,高考各高中成绩喜报榜单尚未公布,下面是往年各地区高考成绩排名查询,高考各高中成绩喜报榜单,想要了解同学可以…

云计算与人工智能

来自:cnblogs.com/popsuper1982/p/8505203.html我今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西呢?因为这三个东西现在非常非常的火,它们之间好像互相有关系…

泸西一中2021高考成绩查询,云南红河州四所好高中,红河州一中一本率领先,建水一中不容小觑...

红河州地处我国西南,是一个常住人口超过467万的多民族聚居边疆自治州(地级行政区划),下辖4市(县级)、9县(其中3个自治县),经济总量在全省仅次于昆明与曲靖,是一个综合实力较强的自治州。红河州的基础教育实力相当不错,…

python 遍历list_Python列表遍历知多少

遍历列表中的所有元素是常用的一种操作,在遍历的过程中可以完成查询、处理等功能。在生活中,如果想要去商场买一件衣服,就需要在商场中逛一圈,看是否有想要买的衣服。逛商场的过程相当于列表的遍历操作。在Python中遍历列表的方法…

自我监督学习:AI技术的未来发展方向

尽管深度学习已经在人工智能领域做出重大贡献,但这项技术本身仍存在一项致命缺陷:需要大量数据的加持。来源丨The Next Web尽管深度学习已经在人工智能领域做出重大贡献,但这项技术本身仍存在一项致命缺陷:需要大量数据的加持。深…

vue8 生命周期

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>智能社——http://www.zhinengshe.com</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum…

AI无间道!清华AI团队推出AI安全平台,欺骗顶尖人脸算法后又强势修复漏洞

随着人工智能技术的发展&#xff0c;人工智能在很多场景里正逐渐替代或协作着人类的各种劳动&#xff0c;它们可以成为人类的眼睛、耳朵、手臂甚至大脑。其中&#xff0c;机器视觉作为AI时代的基础技术&#xff0c;其背后的AI算法一直是各科技巨头和创业公司共同追逐的热点。然…

神经拟态芯片拉近AI与人脑距离

来源&#xff1a;科技日报除了会看会听&#xff0c;还会“闻”。近日&#xff0c;一直致力于模仿人类五感的人工智能又有新突破&#xff0c;通过神经拟态芯片&#xff0c;人工智能已经掌握了丙酮、氨和甲烷等10种气味的神经表征&#xff0c;强烈的环境干扰也不会影响它对气味的…

单片机与微型计算机在结构上的区别和联系,AT89S52单片机片内硬件组成结构,与一般单片机和微机组成结构比较,显著区别有?...

满意答案a52245122020.09.19采纳率&#xff1a;49% 等级&#xff1a;8已帮助&#xff1a;159人以下内容讲诉了AT89S51/52单片机与AT89C51单片机的区别&#xff0c;资源来自网络转帖于此&#xff0c;请核实后采用。它们之间主要区别在于以下几点&#xff1a;1.引脚功能:管脚几…

蒲慕明院士:脑机融合技术或许会成为未来人工智能的一个热门方向

来源&#xff1a;中国经济大讲堂【导读】当前&#xff0c;以人工智能为代表的新技术&#xff0c;成为推动第四次工业革命走向深入的重要力量&#xff0c;会给经济、社会、文化等多领域的发展带来深刻变革。但是&#xff0c;因为对大脑工作方式的了解有限&#xff0c;人工智能的…

html 两个图片并排,HTML – 两个图像并排和响应

使用显示表并排放置并保持并排并响应.显示&#xff1a;表;表格布局&#xff1a;固定;将使用display&#xff1a;table-cell为子元素创建流畅的布局;这不仅可以使它们保持相同的宽度,还可以使容器保持相同的高度.vertical-align&#xff1a;top;将它们与顶部对齐,或者您可以将垂…

opencv 4快速入门_初学摄影,怎么才能快速入门?给初学的你们4条建议

初学摄影&#xff0c;怎么才能快速入门&#xff1f;给初学的你们4条建议大家在初期学习摄影的时候&#xff0c;不知道怎么入门&#xff0c;也不会拍摄&#xff0c;今天就给初学摄影的你们几条建议&#xff01;一、选对拍摄模式很多新手摄影师一直用P档拍摄&#xff0c;过一段时…