python将图片存数据库blob,再读出来保存
(2018-05-12 00:11:49)分类: Linux学习、python |
本实例是基于mysql8.0.11的,python2.7.14。mysql8有点不太一样,注意语法和使用。
##########################################################
# -*- coding: UTF-8 -*-
import mysql.connector
from mysql.connector import MySQLConnection, Error
import sys
try:
# 读取图片文件
fp = open("D:\\1.jpg", 'rb') #注意这里一定要使用rb,读出二进制文件,否则有读不全等问题
img = fp.read()
fp.close()
except IOError, e:
print "Error %d %s" % (e.args[0], e.args[1])
sys.exit(1)
try:
# mysql连接
conn = mysql.connector.connect(host='localhost', user='XXX', passwd='XXX', db='memberdb')
cursor = conn.cursor()
updateMemInfo = (
"REPLACE INTO memberinfo (speciCode, age, qqImg) "
"VALUES (%s, %s, %s)")
dataMemInfo = ('Q94x_xozCm', 23, img)
cursor.execute(updateMemInfo, dataMemInfo)
# 如果数据库没有设置自动提交,这里要提交一下
conn.commit()
cursor.close()
# 关闭数据库连接
conn.close()
except Error, e:
print "Error %d %s" % (e.args[0], e.args[1])
sys.exit(1)
##########################################################################
2.从数据库中读出数据,并存文件
config = {
'user': 'XXX',
'password': 'XXX',
'host': '127.0.0.1',
'database': 'memberdb',
'raise_on_warnings': True,
'use_pure': False,
}
def write_file(data, filename):
with open(filename, 'wb') as f:
f.write(data)
f.close()
def read_blob(code, filename):
try:
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
query = ("SELECT qqImg FROM memberinfo WHERE speciCode = %s")
dataMemInfo = 'Q94x_xozCm'
cursor.execute(query, (dataMemInfo,))
photo = cursor.fetchone()[0]
cursor.close()
# 关闭数据库连接
conn.close()
write_file(photo, filename)
except Error as e:
print(e)
finally:
cursor.close()
conn.close()