如何通过 pymysql 正确地将图像放入 MySql 中。我在上一个问题中尝试过,但我sqlite3现在在尝试做同样的事情时使用了它:
import sys
import pymysql
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
con = pymysql.connect(
host=host,
port=3306,
user=user,
password=password,
db="test",
charset='utf8mb4')
cur = con.cursor()
with open('woman.jpg', "rb") as f:
img_data = f.read()
binary = pymysql.Binary(img_data)
cur.execute("INSERT INTO Images(Data) VALUES (%s)", (binary,))
con.commit()
app = QApplication([])
w = QWidget()
layout = QVBoxLayout()
w.setLayout(layout)
cur.execute("SELECT Data FROM Images")
d = cur.fetchall()
for (img_data,) in d:
pixmap = QPixmap()
pixmap.loadFromData(img_data)
label = QLabel()
label.setPixmap(pixmap)
layout.addWidget(label)
w.show()
收到错误:
损坏的 JPEG 数据:标记 0xd9 JPEG 数据流之前的 1 个无关字节不包含图像
当然,也许问题出在表本身的结构上,我不太确定它应该是什么,bynary因为它sqlite是numery


MySQL将数据类型更改为 就足够了binary,blob因为它对binary其中的字符数有限制,并且等于 255,如char然后重新上传图片到数据库