python_mysql

2023-11-15

pymysql模块

pip3 install pymysql

pymysql使用流程
1. 建立数据库连接 (db = pymysql.connect(…))
2. 创建游标对象 (cur = db.cursor() )
3. 游标方法: cur.execute("insert … ")
4. 提交到数据库或者获取数据 :
修改更新提交 db.commit()
获取数据 cur.fetchall()
5. 关闭游标对象: cur.close()
6. 断开数据库连接: db.close()

常用函数 :
db = pymysql.connect(参数列表)
功能:链接数据库
host:主机地址
port: 端口号,默认3306
user:用户名
password: 密码
database:库
chartset:编码方式,推荐使用utf8

cur = db.cursor()
功能:创建游标
返回值:返回游标对象,用于执行具体sql命令

cur.execute(sql,list_)
功能:执行SQL命令
参数:sql sql语句
list_ 列表,用于给sql语句传递参数

cur.executemany(sql命令,list_)
功能:多次执行sql命令,执行次数由列表中元组数量决定
参数:sql sql语句
list_ 列表中包含元组 每个元组用于给sql语句传递参量,一般用于写操作

cur.fetchone() 获取查询结果集的第一条数据,查找到返回一个元组否则返回None
cur.fetchmany(n) 获取前n条查找到的记录,返回结果为元组嵌套元组,(记录1)(记录2)
cur.fetchall() 获取所有查找到的记录,返回结果形式如上
cur.close() 关闭游标

db.commit() 提交到数据库执行
db.rollback() 回滚,用于当前commit() 出现是回复到原来的数据形态
db.close() 关闭连接


例 :
连接数据库(连接自己计算机可以不写host port)

db =pymysql.connect(host = "localhost",
                                  port = 3306,   
                                  user = "root",
                                  password = "123456",
                                  database = "stu",
                                  charset = "utf8"
                                   ) 

#创建游标(游标对象负责调用执行sql语句,操作数据,得到结果 )
cur = db.cursor()

#对数据库操作 (增删改查)
sql = “select name,age,score from cls”
cur.execute(sql) #执行

#利用execute 参数列表解决 (单条)

sql  ="select name ,age,score from cls where name = "%s" or score>"%s";"
      cur.execute(sql,[name,80])   #执行sql,列表不能传递关键字,符号,表格

      sql = "insert into cls values(5,"EVA","18","2","w");"
      cur.execute(sql)
       
      sql = "update hobby set price = "%s" where name = "%s";"
      cur.execute(sql,[8800,"Joy"]) 
      
      sql = "delete from cls where name ="%s";"
      cur.execute(sql,["Lily"]) 
      cur.commit()     #如果插入数据需要提交commit,将sql语句的操作行为提交写入到数据库

#插入多条记录
l = [(“DAT”,16,“m”,77),(“Bety”,18,“m”,80),(“gona”,17,“w”,90),(“jona”,15,“w”,80)]
sql = “insert into cls (name,age,sex,score) values (%s,%s,%s,%s)”
cur.executemany(sql,l)
db.commit()
#cur 在查询后可以迭代取值
for row in cur:
print(row)

        #获取一条记录
        # row = cur.fetchone()
        #print(row)

        #多个结果
        # row = cur.fetchmany(2)
        #print(row)

       #所有结果 没有结果返回()
       #row = cur.fetchmany(2)

#插入图片
with open(“pyt.jpg”,“rb”) as f;
data = f.read() #字节串
sql =“update cls set images =”%s" where id = 2;"
cur.execute(sql,[data])
db.commit()

#提取图片
sql =“select image from cls where id = 2;”
cur.execute(sql)
data = cur.fetchone() #(image,) 是个元组
with open(“sg.jpg”,“wb”) as f:
f.write(data[0])

except Exception as e:
print (e)
#注意如果不支持事务的引擎,执行一条语句就会直接写入到数据内
#这样就不能回滚了,但是支持事务的引擎,则可以回滚,因为数据会保留在
db.rollback() #没有提交到数据库的内容,全部失效

#关闭游标和数据库
cur.close()
db.close()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python_mysql 的相关文章

随机推荐

  • depot_tools安装过程

    depot tools安装过程 使用torserviseSVN 1 6 6版本 移除其它版本 Install the depot tools Chromium and Chromium OS use a package of scripts
  • 数据结构——线性表(C++)

    一 前言 数据结构在逻辑结构上分为线性和非线性 例如链表 顺序表 串 数组都是线性的 他们的特点就是一对一 而非线性结构比如图和二叉树 他们的对应关系是一对多 多对多 这里介绍线性表的顺序表和链表 循环链表和双向链表 还有双向循环链表 链表
  • 关于springboot profiles

    在项目中会遇到项目环境变量切换到的问题 但是主要配置相同 只想切换部分的配置 可以在application yml配置所有的环境变量 然后在application dev yml配置dev中的环境变量 如果dev中没有配置会读取applic
  • tan x x的matlab求解,matlab画x=tan(x)

    matlab怎么解非线性方程 如tan x 4x x 2 4 equ sym tan x 4 x x 2 4 x solve equ gt gt xx 0再问 这只能求出一个解啊再答 还有其他解吗 matlab 求解tan x x 1 0
  • Rotated_Faster_Rcnn

    rotated faster rcnn 文章目录 训练 rpn head forward train rpn head forward rpn head loss rpn head get bboxes roi head forward t
  • mysql绿色版安装与卸载

    第一步 下载Mysql 官网下载地址 https dev mysql com downloads mysql 1 鼠标滑下来 找到Other Download中的 Windows x86 64 bit ZIP Archive 点击其右边的D
  • 第32步 机器学习分类实战:SHAP

    继续填坑 这回到SHAP 这个是选修 有兴趣可以看看 我们建立了十个ML模型 如果选出了Xgboost LightGBM Catboost这种树模型 大概率也是这些最厉害了 那就可以用SHAP进行模型可视化 1 首先 使用pip insta
  • 解决“The debugger has set two breakpoints at the same address 0x08xxxxx”问题

    今天来分享一个前段时间做项目适合遇到的一个bug 正好今天有空就拿出来跟大家分享一下 错误 首先 大家直接来看这个错误提示 这个错误是我在使用J Link调试时候出现的 上面的意思是 调试器在同一地址设置了两个断点 但是我检查了整个工程也没
  • 数据结构编程回顾(五)交通咨询系统设计

    题目五 交通咨询系统设计 设计要求 设计一个咨询交通系统 能让旅客咨询从任一个 城市到另一个城市之间的最短路径 里程 最低费用或者 最少时间等问题 对于不同的咨询要求 可以输入城市间路 程 所需时间或者所需费用 设计分3 个部分 1 建立交
  • QT connect第五个参数

    一 介绍 1 Qt AutoConnection 默认连接 连接类型在信号发出时确定 如果接收者和发送者在同一个线程 使用Qt DirectConnection类型 如果接收者和发送者不在一个线程 则使用Qt QueuedConnectio
  • 管理概论笔记

    前言 本文章属于在听课时做的笔记 第一周 管理导论 来源 管理概论 浙江大学 邢以群 MOOC 学习理论的目的是为了能够做没有学过的人做不了的事情或者比他们做得更好 一 管理及其功能 介绍什么是管理以及为什么需要管理 观念决定行为 行为决定
  • GBDT的正则化及与XGBOOST区别

    1 GBDT的正则化 和Adaboost一样 我们也需要对GBDT进行正则化 防止过拟合 GBDT的正则化主要有三种方式 第一种是和Adaboost类似的正则化项 即步长 learning rate 定义为 对于前面的弱学习器的迭代 fk
  • Shiro中Session和Cache

    Session是一种状态保持机制 参考文章Session是什么可知Session和Web服务也没有必然关系 Shiro本身的Security Manager也可以脱离Servlet自己管理Session 根据Security Manager
  • 13-3 动态链接库的编译和使用

    1 静态链接库与动态链接库 由于静态链接库不能共享 且依赖的符号的对应目标文件与主程序文件需要一同编译 故静态链接库内存空间占用较大 而动态链接库具有共享性质 通过特定路径即可引用 可以有效减少内存空间的占用 此外 可使用 ldd 命令查看
  • ubuntu16.04.1安装xrdp实现远程桌面访问

    之前测试过xfce4桌面 但是其实ubuntu16 04 1默认的unity桌面也是可以的 首先需要安装 tigervncserver 1 6 80 wget c http www c nergy be downloads tigervnc
  • python刷题第七周

    以下是有所收获的题目 第一题 第5章 2 图的字典表示 20 分 图的字典表示 输入多行字符串 每行表示一个顶点和该顶点相连的边及长度 输出顶点数 边数 边的总长度 比如上图0点表示 O A 2 B 5 C 4 用eval函数处理输入 ev
  • 服务器网站5m带宽在线多少人?

    同时访问一个网站的人数是在线的 这由许多因素决定 包括服务器带宽 质量和同时访问您的网站的人数有关的网站类型 若使用的是独享5M带宽 即5Mbit s 相应云服务器的数据最高传输速度应为5Mbit s x 1024 8 640KB 1分钟流
  • 面试官问:Redis 分布式锁如何自动续期?

    资深面试官 你们项目中的分布式锁是怎么实现的 老任 基于redis的set命令 该命令有nx和ex选项 资深面试官 那如果锁到期了 业务还没结束 如何进行自动续期呢 老任 这个 面试官 您上个问题是啥来着 资深面试官 你们项目中分布式锁是怎
  • springboot之乐观锁和悲观锁

    适用场景 悲观锁 比较适合写入操作比较频繁的场景 如果出现大量的读取操作 每次读取的时候都会进行加锁 这样会增加大量的锁的开销 降低了系统的吞吐量 乐观锁 比较适合读取操作比较频繁的场景 如果出现大量的写入操作 数据发生冲突的可能性就会增大
  • python_mysql

    pymysql模块 pip3 install pymysql pymysql使用流程 1 建立数据库连接 db pymysql connect 2 创建游标对象 cur db cursor 3 游标方法 cur execute insert