怎么用Python程序实现向MySQL存放图片
更新时间:2023-10-19前言
MySQL是一款常用的关系型数据库管理系统,而Python作为一个通用的高级编程语言,有着很多强大的功能,包括与MySQL数据库进行交互并存储图片。Python连接MySQL的方式有很多,比如使用原生的MySQL驱动程序或者使用第三方库,如SQLAlchemy和PyMySQL。如果我们想要在MySQL数据库中存储图片,可以使用Python的Pillow库,通过二进制文件流的形式将图片数据存储到MySQL数据库中。步骤一:创建数据库
首先使用MySQL命令行或图形界面工具创建一个数据库,例如我们创建了一个名为“image_store”的数据库
CREATE DATABASE image_store;
步骤二:创建表
接下来,我们需要根据需要存储的图片信息,创建一个对应的表。假设我们需要存储每个图片的文件名、图片类型和二进制文件数据,我们可以这样创建表:
CREATE TABLE `images` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `filename` varchar(255) NOT NULL, `type` varchar(20) NOT NULL, `data` longblob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
步骤三:编写Python代码
创建数据库和表完成之后,接下来我们需要编写Python代码连接到MySQL数据库,并将图片的二进制数据存储到数据库中。下面是具体的代码实现:
import mysql.connector from mysql.connector import errorcode from PIL import Image DB_NAME = 'image_store' TABLES = {} TABLES['images'] = ( "CREATE TABLE `images` (" " `id` int(11) unsigned NOT NULL AUTO_INCREMENT," " `filename` varchar(255) NOT NULL," " `type` varchar(20) NOT NULL," " `data` longblob NOT NULL," " PRIMARY KEY (`id`)" ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;" ) def create_database(cursor): try: cursor.execute( "CREATE DATABASE {} DEFAULT CHARACTER SET 'utf8mb4'".format(DB_NAME)) except mysql.connector.Error as err: print("Failed creating database: {}".format(err)) exit(1) def create_tables(cursor): for table_name in TABLES: table_description = TABLES[table_name] try: print("Creating table {}: ".format(table_name), end='') cursor.execute(table_description) except mysql.connector.Error as err: if err.errno == errorcode.ER_TABLE_EXISTS_ERROR: print("already exists.") else: print(err.msg) else: print("OK") def store_image(filename): try: img = Image.open(filename) img_data = img.tobytes() img_type = img.format cnx = mysql.connector.connect(user='admin', password='admin', database=DB_NAME) cursor = cnx.cursor() add_image = ( "INSERT INTO images " "(filename, type, data) " "VALUES (%s, %s, %s)" ) data_image = (filename, img_type, img_data) cursor.execute(add_image, data_image) cnx.commit() cursor.close() cnx.close() except mysql.connector.Error as err: print(err.msg) except IOError: print("Image not found or path is incorrect") file_path = "/path/to/your/image.png" store_image(file_path)
总结
以上就是使用Python将图片存储到MySQL数据库的完整步骤。我们首先创建了一个名为“image_store”的数据库和包含图片信息的“images”表,然后使用Python进行了数据库连接,并通过二进制数据的方式将图片信息存储到数据库中。如果您需要从MySQL数据库中读取图片,只需要反向提取二进制数据,并使用Pillow库将数据重新转换为图片即可。希望这篇文章对您有所帮助。