Python连接Mysql数据库,读写数据库中图片

2023-11-08

本文使用到的pymysql为1.0.2版本

 在IDEA中配置Python参考本人写的另一篇文章http://t.csdn.cn/OHCRC

第一步:安装PyMySQL

PyMySQL用于 python连接到MySQL数据库服务器,在IDEA中安装PyMySQL如下图所示。

在终端中输入命令:pip3 install PyMySQL

 第二步:连接数据库

1.打开数据库连接,使用方法pymysql.connect()

2.使用cursor()方法创建游标对象 

3.使用游标对象 . execute()方法执行SQL语句 

4.关闭数据库连接 ,关闭游标

以下代码修改connect中的内容即可直接运行

import pymysql
 
db = pymysql.connect(host='',#数据库所在地IP地址,本机默认localhost即可
                     user='',#数据库的用户名
                     password='',#用户密码
                     database='')#数据库的名称,不是数据库中表的名称
 
cursor = db.cursor()#创建一个游标对象

cursor.execute("SELECT VERSION()")# 执行 SQL 语句,查询数据库版本,返回一条数据
 
data = cursor.fetchone()# 使用 fetchone() 方法获取上面查询后返回的单条数据.
 
print ("Database version : %s " % data)
 
db.close()# 关闭数据库连接
cursor.close()#关闭游标对象

 第三步:向数据库中存入图片

1.打开图片,读取图片数据

2.使用游标对象 . execute()方法执行SQL语句插入图片数据

打开图片时,如果使用open('lucy.jpg')方式打开,而不在参数中添加'rb',则在执行SQL语句时,要将图片的数据使用escape_string方法进行转义,在pymysql1.0版本以上时,语句为:pymysql.converters.escape_string()

不推荐使用这种转义的方法,这种方法还需要在open函数中添加另一个参数encoding='ISO-8859-1',否则图片数据写入数据库时,会报错gbk格式或是其他格式无法解释图片数据。即使是添加了这个encoding参数,写入的数据也无法直接读取出来,读取出来会显示图片格式错误或格式不支持

import pymysql
 
db = pymysql.connect(host='',
                     user='',
                     password='',
                     database='')
#打开我目录下名为'lucy.jpg'图片
with open('lucy.jpg', 'rb') as f:
    img = f.read()

 
cursor = db.cursor()#创建一个游标对象

#使用游标对象执行插入图片数据的sql语句
sql="INSERT INTO Images  (Data) VALUES (%s)"
cursor.execute(sql ,img)
 
db.commit()#提交插入请求
 
db.close()# 关闭数据库连接
cursor.close()#关闭游标对象

第四步:从数据库中读取图片

1. execute()方法执行SQL语句读回图片数据

2. 使用fetchone()方法将图片数据写入一个文件

fetchone()也是游标对象的一个方法,该方法获取单条数据,获取下一个查询结果集,返回元组,cursor.fetchone()[0]即为提取第一个元素

import pymysql
 
db = pymysql.connect(host='',
                     user='',
                     password='',
                     database='')
#打开我目录下名为'lucy.jpg'图片
with open('lucy.jpg', 'rb') as f:
    img = f.read()

 
cursor = db.cursor()#创建一个游标对象

cursor.execute("SELECT Data FROM Images LIMIT 1")#提取数据库第一行数据

res = cursor.fetchone()[0]
with open('lc2.jpg', 'wb') as f:
    f.write(res)
 
db.close()# 关闭数据库连接
cursor.close()#关闭游标对象

附:读写图片代码及效果

import pymysql

db = pymysql.connect(host='',
                     user='',
                     password='',
                     database='',)

with open('lucy.jpg', 'rb') as f:
    img = f.read()

cursor = db.cursor()

sql="INSERT INTO Images  (Data) VALUES (%s)"
cursor.execute(sql ,img)
db.commit()

cursor.execute("SELECT Data FROM Images LIMIT 1")
res = cursor.fetchone()[0]
with open('lc2.jpg', 'wb') as f:
    f.write(res)


# 关闭数据库连接和游标连接
cursor.close()
db.close()

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

Python连接Mysql数据库,读写数据库中图片 的相关文章

  • 尽管极其懒惰,但如何在 Python 中模拟 IMAP 服务器?

    我很好奇是否有一种简单的方法来模拟 IMAP 服务器 例如imaplib模块 在Python中 without做很多工作 是否有预先存在的解决方案 理想情况下 我可以连接到现有的 IMAP 服务器 进行转储 并让模拟服务器在真实的邮箱 电子
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 在WPF中获取程序的专用工作集内存 PerformanceCounter

    使用 PerformanceCounter 获取程序的专用工作集内存并不难 但是就是得找一下属性 通过 CategoryName 遍历 InsanceName 再通过它们遍历 CounterName 之后通过这三个属性得到我们想要的内存 p
  • 数字电路设计之Leon系列处理器结构

    LEON处理器核心是一个与SPARCV8兼容的整数处理单元IU Integer Unit LEON2 是 5 级流水线 LEON3 是 7 级流水线 LEON 包含整数硬件乘法和除法单元 双协处理器 接口 FPU 浮点处理单元和Co pro
  • Python Web:绝对路径和相对路径

    Python Web篇学习汇总 Python Web 操作系统与虚拟机软件 Python Web 了解Ubuntu操作系统 Python Web Linux查看 切换目录命令 努力为大家更新Python web部分的内容 想看持续更新的记得
  • 电脑中常用的“扇区”、“簇”、“块”、“页”等概念

    先看百度百科对于磁盘簇的解释 扇区是磁盘最小的物理存储单元 但由于操作系统无法对数目众多的扇区进行寻址 所以操作系统就将相邻的扇区组合在一起 形成一个簇 然后再对簇进行管理 每个簇可以包括2 4 8 16 32或64个扇区 显然 簇是操作系
  • svg -> text文本水平、垂直居中。文本垂直对齐方式

  • Systemd 入门教程:实战篇

    本文转载至 http www ruanyifeng com blog 2016 03 systemd tutorial part two html 作者 阮一峰 日期 2016年3月 8日 上一篇文章 我介绍了 Systemd 的主要命令
  • 企业知识分享系统的设计与实现

    摘 要 随着信息技术和网络技术的飞速发展 人类已进入全新信息化时代 传统管理技术已无法高效 便捷地管理信息 为了迎合时代需求 优化管理效率 各种各样的管理系统应运而生 各行各业相继进入信息管理时代 企业知识分享系统就是信息时代变革中的产物之
  • 基于AI的4G/5G基站节能的智能解决方案

    随着移动通信网络建设规模逐年增加 通信设备对能源的需求与日俱增 移动通信网络的能耗在运营商的运营成本 OPEX Operating Expense 占比已高于15 经过5G试商用网络的测试验证 5G单站功耗是4G单站功耗的3 4倍 运营商面
  • 提示OpenGL版本过低怎么办

    OpenGL是一个可以加速2D和3D图形的图形库 在计算机显示技术中广泛使用 常用于游戏制作 建筑设计 医疗成像 科学数据可视化等领域 然而 当你尝试运行使用OpenGL的软件或游戏时 你可能会收到一个消息 OpenGL版本过低 请升级驱动
  • 易语言升级版火山软件开发平台现在很庞大了

    中文编程的魅力很吸引人 易语言时代就经常用它编编小程序 易语言最后是输出成vc6编译出来的效果一样 小而精 vc6毕竟是比较古老的技术 现在升级版火山软件开发平台已经能够比较耐用了 一个ide可以开发安卓和windows这2种应用 wind
  • BlueZ5.45 D-Bus总线 GATT API 分析

    笔者目前做linux系统下bluez蓝牙项目开发 发现网上关于bluez开发的资料很少 对于刚开始接触bluez蓝牙的开发人员来说是非常痛苦的 通过调试bluez源码自带的应用例子和文档说明 对BlueZ5 45 D Bus总线 GATT
  • 最大公约数GCD

    输入2个正整数A B 求A与B的最大公约数 Input2个数A B 中间用空格隔开 1 lt A B lt 10 9 Output输出A与B的最大公约数 Sample Input 30 105 Sample Output 15 includ
  • 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。

    对于长度为5位的一个01串 每一位都可能是0或1 一共有32种可能 它们的前几个是 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串 输入格式 本试题没有输入 输出格式 输出32行 按从小到大
  • Unity3D中三种调用其他脚本函数的方法

    第一种 被调用脚本函数为static类型 调用时直接用 脚本名 函数名 第二种 GameObject Find 脚本所在的物体的名字 SendMessage 函数名 能调用public和private类型函数 第三种 GameObject
  • 14-矩阵相乘及其运算法则

    矩阵与向量的乘法 在这一篇文章中我们就将基于上一篇重新审视矩阵的这个视点来理解矩阵的乘法 那么在这一篇 我们主要来看一下矩阵和向量的乘法 这里这个线性方程组是上一小节给大家举的模拟的一个非常简单的小型经济系统的例子 我们可以把这个经济系统其
  • 细说业务逻辑(后篇)

    细说业务逻辑 后篇 作者 EricZhang T2噬菌体 来源 博客园 时间 2009 11 01 阅读 295 次 原文链接 收藏 前篇 http kb cnblogs com page 50470 3 业务逻辑的架构模式及实现 Mart
  • Unity3d之Animation(动画系统)

    Unity3d之Animation 动画系统 原创 2016年04月30日 18 15 17 标签 unity3d 动画 Animation 20914 1 动画系统配置 2 代码控制动画 原文地址 http blog csdn net d
  • Windows C++远程线程(CreateRemoteThread)注入DLL方法、代码示例。

    使用远程线程CreateRemoteThread的方法可以在其他进程中注入自己想注入的DLL 千万不要用这个方法搞破坏哦 我们搞一个可以弹窗的DLL代码 让进程只要LOAD DLL就会弹窗 DLL代码 include
  • 第16节 综合实验—部署域,在域中部署DHCP、WEB和文件共享服务器

    综合实验 1 共享服务器在域环境中与在工作组中的区别 1 1 在工作组中时 1 2 在域中时 2 实验要求 3 实验步骤 3 1 构建域与配置DNS服务器 用win2008 3 2 将win2003构建成DHCP WEB以及文件共享服务器
  • Python连接Mysql数据库,读写数据库中图片

    本文使用到的pymysql为1 0 2版本 在IDEA中配置Python参考本人写的另一篇文章http t csdn cn OHCRC 第一步 安装PyMySQL PyMySQL用于 python连接到MySQL数据库服务器 在IDEA中安