• 技术文章 >后端开发 >Python教程

    怎么用Python程序实现向MySQL存放图片

    WBOYWBOY2023-04-19 15:16:08转载45

    环境

    Python 3.7.4
    pymysql
    8.0.11 MySQL Community Server

    读取图片

    以二进制格式读取图片

    with open("./test.jpg", "rb") as file:
    	image = file.read()

    创建存放图片的表

    存放图片字段的属性为longblog,即long binary large object

    def create_image_table(self):
    	sql = 'create table if not exists picture ( \
            image longblob);'
    
        try:
            self.cursor.execute(sql)
    
            self.connection.commit()
    
        except pymysql.Error:
            print(pymysql.Error)

    存入MySQL

    将二进制格式的图片数据存入MySQL

    def insert_image(self, image):
        sql = "insert into picture(image) values(%s)"
        self.cursor.execute(sql, image)
        self.connection.commit()

    保存MySQL查询得到的图片数据为图片

    以二进制的格式写出图片

    def get_image(self, path):
        sql = 'select * from picture'
        try:
            self.cursor.execute(sql)
            image = self.cursor.fetchone()[0]
            with open(path, "wb") as file:
                file.write(image)
        except pymysql.Error:
            print(pymysql.Error)
        except IOError:
            print(IOError)

    实现代码

    import pymysql
    
    
    class Database():
    	
    	'''
    		Description:
    			database demo to store image in MySQL RDBMS
    		Attributes:
    			None
    	'''
        
        def __init__(self):
            self.connection = pymysql.connect(host='<host name>',user='<user name>',passwd='<password>',db='<database name>',charset='utf8')
            self.cursor = self.connection.cursor()
    
    	'''
    		Description:
    			create table to store images
    		Args:
    			None
    		Return:
    			None
    	'''
        
        def create_image_table(self):
            sql = 'create table if not exists picture ( \
                image longblob);'
    
            try:
                self.cursor.execute(sql)
    
                self.connection.commit()
    
            except pymysql.Error:
                print(pymysql.Error)
    	
    	'''
    		Description:
    			insert image into table
    		Args:
    			image:
    				image to store
    		Returns:
    			None
    	'''
    
        def insert_image(self, image):
            sql = "insert into picture(image) values(%s)"
            self.cursor.execute(sql, image)
            self.connection.commit()
    	
    	'''
    		Description:
    			get image from database
    		Args:
    			path:
    				path to save image
    		Returns:
    			None
    	'''	
    
        def get_image(self, path):
            sql = 'select * from picture'
            try:
                self.cursor.execute(sql)
                image = self.cursor.fetchone()[0]
                with open(path, "wb") as file:
                    file.write(image)
            except pymysql.Error:
                print(pymysql.Error)
            except IOError:
                print(IOError)
                
    	'''
    		Description:
    			destruction method
    		Args:
    			None
    		Returns:
    			None
    	'''
    	
        def __del__(self):
            self.connection.close()
            self.cursor.close()
    
    if __name__ == "__main__":
        database = Database()
        # read image from current directory
        with open("./test.jpg", "rb") as file:
            image = file.read()
    
        database.create_image_table()
        database.insert_image(image)
    
        database.get_image('./result.jpg')

    测试结果

    以上就是怎么用Python程序实现向MySQL存放图片的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Python MySQL
    上一篇:Python异步之推导式怎么应用 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 如何使用Python Asyncio实现网站状态检查• Python中的生成器、迭代器、动态新增属性和方法详解• 如何用Python批量删除或移动指定图像?• 如何使用Python的pathlib模块处理文件路径?• 使用Python实现一个简单的四则运算解释器
    1/1

    PHP中文网