欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql數據庫如何存儲圖片python

錢琪琛2年前9瀏覽0評論

MySQL是一種流行的關系型數據庫管理系統,常用于存儲各種類型的數據,包括圖片。在Python中,我們可以使用mysql-connector-python這個庫來連接和操作MySQL數據庫。

首先,我們需要創建一個table用于存儲圖片。下面是一個簡單的例子:

CREATE TABLE images (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
img BLOB
);

這個table包含兩個字段,一個是id用于唯一標識每個圖片,另一個是img用于存儲二進制圖片數據。接下來,我們可以使用Python將圖片數據插入到數據庫中:

import mysql.connector
from mysql.connector import Error
def insert_image(img_path):
try:
with open(img_path, 'rb') as f:
image_data = f.read()
connection = mysql.connector.connect(host='localhost',
database='mydatabase',
user='myusername',
password='mypassword')
cursor = connection.cursor()
sql_insert_query = """ INSERT INTO images (img) VALUES (%s)"""
cursor.execute(sql_insert_query, (image_data,))
connection.commit()
print("Image inserted successfully")
except mysql.connector.Error as error:
print("Failed to insert image into MySQL table {}".format(error))
finally:
if (connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
insert_image('/path/to/my/picture.jpg')

這個例子中,我們將圖片讀入內存中,然后連接到MySQL數據庫,并使用execute()方法將圖片數據插入到數據庫中。注意,我們將數據以元組的形式傳遞給execute()方法,在值的前面加上一個逗號,將其轉化為元組。

當我們需要從數據庫中讀取圖片時,我們可以執行以下代碼:

import mysql.connector
from mysql.connector import Error
from PIL import Image
from io import BytesIO
def get_image_by_id(id):
try:
connection = mysql.connector.connect(host='localhost',
database='mydatabase',
user='myusername',
password='mypassword')
cursor = connection.cursor()
sql_select_query = """SELECT img FROM images WHERE id = %s"""
cursor.execute(sql_select_query, (id,))
record = cursor.fetchone()
image = Image.open(BytesIO(record[0]))
image.show()
except mysql.connector.Error as error:
print("Failed to get image from MySQL table {}".format(error))
finally:
if (connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
get_image_by_id(1)

這個例子中,我們首先從數據庫中獲取圖片數據,然后將其以二進制形式讀入內存中,并使用Pillow庫中的Image對象打開圖片。最后,我們使用show()方法顯示圖片。

總的來說,使用MySQL數據庫存儲圖片可能不是最常用的方法,因為它會增加數據庫的負擔,并使讀寫速度變慢。但是在一些應用場景下,這個方法可能會很有用。