python mysql存储图片_python 向mysql中存储图片以及读取图片

转载自:http://www.cnblogs.com/sherlockhua/archive/2012/03/29/2423786.html

python2.0

Python 操作 MySQL 数据库

(十二)插入图片

有人喜欢使用mysql来存储图片,而有的人喜欢把图片存储在文件系统中。而当我们要处理成千上万的图片时,会引起技术问题。图片时二进制数据,mysql有种特殊的数据类型,用来存储二进制数据,叫做BLOB(Binary Large Ojbect)。

开始之前,我们创建一个images表用来存储图片数据,代码如下:

mysql> CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);

Query OK, 0 rows affected (0.06 sec)

接着,我们读取图片数据,并把它插入到数据库中,示例代码如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import MySQLdb as mdb

import sys

try:

fin = open("chrome.png")

img = fin.read()

fin.close()

except IOError, e:

print "Error %d: %s" % (e.args[0],e.args[1])

sys.exit(1)

<
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用Python读取MySQL图片,需要以下步骤: 1. 安装PythonMySQL连接库,如mysql-connector-python或PyMySQL。 2. 连接MySQL数据库,并选择相应的数据库和表格。 3. 执行查询语句,选择需要读取的图片字段。 4. 将读取到的二进制数据保存为图片文件。 下面是一个简单的示例代码: ```python import mysql.connector import os connection = mysql.connector.connect( host="localhost", user="root", passwd="password", database="testdb" ) cursor = connection.cursor() cursor.execute("SELECT image_data FROM images WHERE id = 1") result = cursor.fetchone() if result: image_data = result[0] with open("image.jpg", "wb") as file: file.write(image_data) print("Image saved successfully!") else: print("Image not found.") cursor.close() connection.close() ``` 以上代码用于读取名为"images"的表格id为1的记录的图片数据,并将其保存为"image.jpg"的文件。可根据实际需要修改相关参数和路径。 当然,如果图片数据较大,也可以通过分批读取等方式进行优化处理。 ### 回答2: 使用Python读取MySQL图片需要涉及到三个步骤:连接数据库、查询图片保存图片。 1.连接数据库 Python连接MySQL可以使用官方提供的MySQL Connector模块,这个模块可以用pip安装。安装好后,就可以用下面的代码连接数据库了。 ```python import mysql.connector # 建立连接 cnx = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name') ``` 2.查询图片 在连接好数据库后,就可以使用MySQL的SELECT语句查询图片了。在SELECT语句,需要指定图片所在的表和字段名,并且查询出来的结果需要使用fetchone()方法获取,获取的结果是二进制数据类型。 ```python # 查询图片 cursor = cnx.cursor() query = ("SELECT image FROM image_table WHERE image_id = %s") cursor.execute(query, (image_id,)) image_data = cursor.fetchone()[0] # 获取图片二进制数据 ``` 3.保存图片 在获取到图片的二进制数据后,就可以使用Python的文件操作功能来保存图片保存图片时,需要指定保存的文件名,并且将二进制数据以二进制方式写入文件。 ```python # 保存图片 with open("image.jpg", "wb") as image_file: image_file.write(image_data) # 将二进制数据写入文件 ``` 完整代码如下: ```python import mysql.connector # 建立连接 cnx = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name') # 查询图片 cursor = cnx.cursor() query = ("SELECT image FROM image_table WHERE image_id = %s") cursor.execute(query, (image_id,)) image_data = cursor.fetchone()[0] # 获取图片二进制数据 # 保存图片 with open("image.jpg", "wb") as image_file: image_file.write(image_data) # 将二进制数据写入文件 ``` 注意事项: 1. 在查询图片时,需要确保图片的字段类型是blob。 2. 在保存图片时,需要确保保存的文件名和路径正确。 ### 回答3: Python读取Mysql图片 Python是一门强大的编程语言,已经成为了许多开发者的首选,它可以通过各种方式读取Mysql图片,本文将带来两种常用的方式,分别是使用MySQLdb和PyMySQL库。 一、使用MySQLdb MySQLdb库是Python操作MySQL的标准库,它提供了对MySQL数据库的连接和操作的支持。基于MySQLdb,我们可以便捷地读取MySQL图片。 1.1 首先需要安装它,可以使用pip安装 ```python pip install MySQLdb ``` 1.2 配置数据库连接参数 ```python import MySQLdb # 配置数据库连接参数 db = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="test", charset='utf8') ``` 1.3 读取图片 ```python import MySQLdb # 配置数据库连接参数 db = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="test", charset='utf8') # 获取游标 cursor = db.cursor() # 执行SQL语句 sql = """SELECT photo FROM photos WHERE id=%s""" % (1) cursor.execute(sql) # 获取结果 result = cursor.fetchone() # 获取图片 photo = result[0] # 关闭数据库连接 db.close() ``` 1.4 保存图片 ```python import MySQLdb # 配置数据库连接参数 db = MySQLdb.connect(host="localhost", user="root", passwd="123456", db="test", charset='utf8') # 获取游标 cursor = db.cursor() # 执行SQL语句 sql = """SELECT photo FROM photos WHERE id=%s""" % (1) cursor.execute(sql) # 获取结果 result = cursor.fetchone() # 获取图片 photo = result[0] # 保存图片 with open('test.jpg', 'wb') as f: f.write(photo) # 关闭数据库连接 db.close() ``` 二、使用PyMySQL PyMySQLMySQLdb相似,同样是从Python操作MySQL数据库的库,但是它对Python3的支持更好,因此如果是Python3环境,建议使用PyMySQL。 2.1 安装库 ``` pip install PyMySQL ``` 2.2 配置数据库连接参数 ```python import pymysql # 配置数据库连接参数 conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8') ``` 2.3 读取图片 ```python import pymysql import io from PIL import Image # 配置数据库连接参数 conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8') # 获取游标 cursor = conn.cursor() # 执行SQL语句 sql = """SELECT photo FROM photos WHERE id=%s""" % (1) cursor.execute(sql) # 获取结果 result = cursor.fetchone() # 获取图片 img = Image.open(io.BytesIO(result[0])) # 关闭数据库连接 conn.close() ``` 2.4 保存图片 ```python import pymysql # 配置数据库连接参数 conn = pymysql.connect(host='localhost', user='root', password='123456', db='test', charset='utf8') # 获取游标 cursor = conn.cursor() # 执行SQL语句 sql = """SELECT photo FROM photos WHERE id=%s""" % (1) cursor.execute(sql) # 获取结果 result = cursor.fetchone() # 获取图片 photo = result[0] # 保存图片 with open('test.jpg', 'wb') as f: f.write(photo) # 关闭数据库连接 conn.close() ``` 以上就是Python读取Mysql图片的两种常用方式,可以根据自己的需要选择一种方式使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值