最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫中存儲(chǔ)圖片和讀取圖片的操作代碼

 更新時(shí)間:2024年11月01日 11:28:51   作者:蠟筆小新星  
在MySQL數(shù)據(jù)庫中存儲(chǔ)圖片通常有兩種主要方式:將圖片以二進(jìn)制數(shù)據(jù)(BLOB 類型)直接存儲(chǔ)在數(shù)據(jù)庫中,或者將圖片文件存儲(chǔ)在服務(wù)器文件系統(tǒng)上,而在數(shù)據(jù)庫中存儲(chǔ)圖片的路徑或URL,以下是這兩種方法的詳細(xì)解釋,包括存儲(chǔ)和讀取操作,需要的朋友可以參考下

方法一:將圖片以 BLOB 類型存儲(chǔ)在數(shù)據(jù)庫中

MySQL 語句實(shí)現(xiàn)

  • 創(chuàng)建表
    首先,你需要在 MySQL 中創(chuàng)建一個(gè)包含 BLOB 字段的表來存儲(chǔ)圖片。
CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    image LONGBLOB NOT NULL
);
  • 插入圖片
    假設(shè)你已經(jīng)有了圖片數(shù)據(jù)(可能是從文件讀取的二進(jìn)制數(shù)據(jù)),你可以使用 INSERT INTO ... VALUES 語句來插入圖片。
INSERT INTO images (name, image) VALUES ('example.jpg', LOAD_FILE('/path/to/example.jpg'));

注意:LOAD_FILE() 函數(shù)要求 MySQL 服務(wù)器對(duì)指定路徑有讀取權(quán)限,且該路徑必須在 MySQL 服務(wù)器的 secure_file_priv 變量指定的目錄中(如果啟用了該變量)。

  • 讀取圖片:
    要從數(shù)據(jù)庫中讀取圖片,你可以使用 SELECT 語句,并在應(yīng)用程序中處理返回的二進(jìn)制數(shù)據(jù)。
SELECT image FROM images WHERE id = 1;

要檢索圖片數(shù)據(jù)并將其保存為文件,你可以使用SELECT語句和INTO OUTFILE:

SELECT image FROM images WHERE id = 1 INTO OUTFILE '/path/to/your/output.jpg';
  • 注意:使用LOAD_FILE()和INTO OUTFILE需要相應(yīng)的文件系統(tǒng)權(quán)限。此外,對(duì)于大型二進(jìn)制數(shù)據(jù),請(qǐng)考慮性能影響,因?yàn)锽LOB數(shù)據(jù)類型可能會(huì)影響數(shù)據(jù)庫性能。

Python 實(shí)現(xiàn)

插入圖片

import mysql.connector

# 連接到數(shù)據(jù)庫
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 讀取圖片文件
with open('/path/to/example.jpg', 'rb') as file:
    binary_data = file.read()

# 插入圖片到數(shù)據(jù)庫
sql = "INSERT INTO images (name, image) VALUES (%s, %s)"
val = ('example.jpg', binary_data)
cursor.execute(sql, val)
conn.commit()

# 關(guān)閉連接
cursor.close()
conn.close()

讀取圖片

import mysql.connector
from io import BytesIO
from PIL import Image

# 連接到數(shù)據(jù)庫
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 從數(shù)據(jù)庫中讀取圖片
sql = "SELECT image FROM images WHERE id = 1"
cursor.execute(sql)
result = cursor.fetchone()
image_data = result[0]

# 使用 PIL 庫顯示圖片
image = Image.open(BytesIO(image_data))
image.show()

# 關(guān)閉連接
cursor.close()
conn.close()

方法二:將圖片存儲(chǔ)在文件系統(tǒng)中,并在數(shù)據(jù)庫中存儲(chǔ)路徑

MySQL 語句實(shí)現(xiàn)

  • 創(chuàng)建表
    創(chuàng)建一個(gè)只包含圖片路徑或 URL 的表。
CREATE TABLE images (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    path VARCHAR(255) NOT NULL
);
  • 插入圖片路徑
    當(dāng)圖片文件被保存到文件系統(tǒng)后,將其路徑插入到數(shù)據(jù)庫中。
INSERT INTO images (name, path) VALUES ('example.jpg', '/path/to/example.jpg');
  • 讀取圖片路徑
    從數(shù)據(jù)庫中讀取圖片路徑,并使用該路徑在文件系統(tǒng)中訪問圖片。
SELECT path FROM images WHERE id = 1;
  • 注意:使用LOAD_FILE()和INTO OUTFILE需要相應(yīng)的文件系統(tǒng)權(quán)限。此外,對(duì)于大型二進(jìn)制數(shù)據(jù),請(qǐng)考慮性能影響,因?yàn)锽LOB數(shù)據(jù)類型可能會(huì)影響數(shù)據(jù)庫性能。

Python 實(shí)現(xiàn)

保存圖片到文件系統(tǒng)并插入路徑

import os
import mysql.connector

# 連接到數(shù)據(jù)庫
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 保存圖片到文件系統(tǒng)
file_path = '/path/to/save/example.jpg'
with open('/path/to/example.jpg', 'rb') as source_file:
    with open(file_path, 'wb') as dest_file:
        dest_file.write(source_file.read())

# 插入圖片路徑到數(shù)據(jù)庫
sql = "INSERT INTO images (name, path) VALUES (%s, %s)"
val = ('example.jpg', file_path)
cursor.execute(sql, val)
conn.commit()

# 關(guān)閉連接
cursor.close()
conn.close()

讀取圖片路徑并顯示圖片

import mysql.connector
from PIL import Image

# 連接到數(shù)據(jù)庫
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 從數(shù)據(jù)庫中讀取圖片路徑
sql = "SELECT path FROM images WHERE id = 1"
cursor.execute(sql)
result = cursor.fetchone()
image_path = result[0]

# 使用 PIL 庫顯示圖片
image = Image.open(image_path)
image.show()

# 關(guān)閉連接
cursor.close()
conn.close()

總結(jié)

  • BLOB 存儲(chǔ):適合存儲(chǔ)小圖片或需要保持?jǐn)?shù)據(jù)完整性的場(chǎng)景,但可能會(huì)增加數(shù)據(jù)庫的大小和備份復(fù)雜性。
  • 文件系統(tǒng)存儲(chǔ):適合存儲(chǔ)大圖片或需要頻繁訪問的場(chǎng)景,可以減少數(shù)據(jù)庫負(fù)載,但需要確保文件系統(tǒng)的可用性和安全性。

選擇哪種方法取決于具體的應(yīng)用場(chǎng)景和需求。

以上就是MySQL數(shù)據(jù)庫中存儲(chǔ)圖片和讀取圖片的操作代碼的詳細(xì)內(nèi)容,更多關(guān)于MySQL存儲(chǔ)和讀取圖片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解析MYSQL顯示表信息的方法

    解析MYSQL顯示表信息的方法

    本篇文章是對(duì)MYSQL顯示表信息的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL數(shù)據(jù)庫表的合并與分區(qū)實(shí)現(xiàn)介紹

    MySQL數(shù)據(jù)庫表的合并與分區(qū)實(shí)現(xiàn)介紹

    今天我們來聊聊處理大數(shù)據(jù)時(shí)Mysql的存儲(chǔ)優(yōu)化。當(dāng)數(shù)據(jù)達(dá)到一定量時(shí),一般的存儲(chǔ)方式就無法解決高并發(fā)問題了。最直接的MySQL優(yōu)化就是分區(qū)分表,以下是我個(gè)人對(duì)分區(qū)分表的筆記
    2022-09-09
  • Mysql中@和@@符號(hào)的詳細(xì)使用指南

    Mysql中@和@@符號(hào)的詳細(xì)使用指南

    最近工作遇到了一個(gè)問題,給自己做個(gè)記錄,下面這篇文章主要給大家介紹了關(guān)于Mysql中@和@@符號(hào)的詳細(xì)使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • mysql報(bào)錯(cuò)ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost解決方式

    mysql報(bào)錯(cuò)ERROR 1396 (HY000): Operation ALT

    這篇文章主要給大家介紹了關(guān)于mysql報(bào)錯(cuò)ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost的解決方式,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-05-05
  • MySQL排序檢索數(shù)據(jù)操作方法梳理

    MySQL排序檢索數(shù)據(jù)操作方法梳理

    SELECT語句是SQL中最常用的語句。它的用途是從一個(gè)或多個(gè)表中檢索信息。為了使用SELECT檢索表數(shù)據(jù),必須至少給出兩條信息:想選擇什么、從什么地方選擇,這篇文章主要介紹了MySQL排序檢索數(shù)據(jù)
    2022-10-10
  • mysql5.7 修改用戶初始密碼的方法

    mysql5.7 修改用戶初始密碼的方法

    當(dāng)用戶首次安裝MySQL數(shù)據(jù)庫時(shí),總是想修改root的初始化密碼,我也是,每次都百度一下,下面主要給出一些操作數(shù)據(jù)庫的常用SQL和一些基本概念性的東西,需要的朋友參考下吧
    2017-06-06
  • mysql中全連接full join...on...的用法說明

    mysql中全連接full join...on...的用法說明

    這篇文章主要介紹了mysql中全連接full join...on...的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mac安裝mysql初始密碼忘記怎么辦

    mac安裝mysql初始密碼忘記怎么辦

    這篇文章主要為大家詳細(xì)介紹了mac安裝mysql忘記初始密碼的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MySQL的主從復(fù)制步驟詳解及常見錯(cuò)誤解決方法

    MySQL的主從復(fù)制步驟詳解及常見錯(cuò)誤解決方法

    這篇文章主要介紹了MySQL的主從復(fù)制步驟詳解及常見錯(cuò)誤解決方法,文中主張同步時(shí)跳過臨時(shí)錯(cuò)誤,并對(duì)Slave_IO_Running: No錯(cuò)誤的解決給出了方案,需要的朋友可以參考下
    2016-02-02
  • Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫完整步驟記錄

    Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫完整步驟記錄

    最近工作中用到國(guó)產(chǎn)數(shù)據(jù)庫達(dá)夢(mèng),簡(jiǎn)稱DM,下面這篇文章主要給大家介紹了關(guān)于Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫完整步驟的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07

最新評(píng)論

伊通| 叶城县| 宁明县| 成安县| 华阴市| 浠水县| 家居| 青田县| 龙里县| 故城县| 南漳县| 新闻| 淅川县| 维西| 华安县| 罗定市| 镇原县| 花莲县| 南皮县| 虞城县| 康保县| 涞水县| 连平县| 柳州市| 海宁市| 越西县| 雅江县| 沙洋县| 双江| 芜湖市| 西和县| 绥棱县| 沽源县| 平原县| 南宫市| 东阿县| 宝鸡市| 昌乐县| 曲沃县| 邵武市| 株洲市|