【问题标题】:Python PyQt5: Store image data into a phpmyadmin databasePython PyQt5:将图像数据存储到 phpmyadmin 数据库中
【发布时间】:2016-10-29 10:07:09
【问题描述】:

我想将一个 .png 文件上传到我的数据库中。

    fileName = QFileDialog().getOpenFileName()
    filePath = str(fileName[0]) # Path of the image data

    self.myImage = filePath


    connection = pymysql.connect(host = 'localhost',
    user = 'root',
    db = 'mydatabase',
    cursorclass = pymysql.cursors.DictCursor)  
    cur = connection.cursor()

    cur.execute("INSERT INTO mytable VALUES('" + self.myImage + "')")  
    connection.commit()

但是出了点问题,因为如果我查看本地数据库,图像会保存为二进制文件,我无法打开或下载它。 如何将图像正确上传到我的数据库?

【问题讨论】:

  • 图像文件只不过是字节 - 就像任何其他文件一样。为什么不能打开或下载?你试过什么? 具体出了什么问题?您问题中的代码不会上传文件;它只是在数据库中插入一个文件路径。
  • 是的,这就是它不起作用的原因。如果我想下载“错误的路径文件”,它会出现一个小的二进制文件而不是图像文件。你不能打开它,它是没用的。我想上传文件而不是路径。我认为路径指的是文件,但事实并非如此。上传图片文件需要做什么?

标签: python sql database image pyqt5


【解决方案1】:

您只需要读取图像文件并将数据作为 blob 存储在数据库中:

with open(filePath, 'rb') as stream:
    blob = stream.read()
    cur.execute("INSERT INTO mytable VALUES(%s)", [blob])

将 blob 转换为像素图:

pixmap = QtGui.QPixmap()
pixmap.loadFromData(blob)

【讨论】:

    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多