繁体   English   中英

如何使用 python 从 MySQL 下载 BLOB .docx 文件?

[英]How to download BLOB .docx file from MySQL using python?

当前代码:

import mysql.connector
import sys

def write_file(data, filename):
    with open(filename, 'wb') as f:
        f.write(data)

sampleNum = 0;
# select photo column of a specific author
# read database configuration
db_config = mysql.connector.connect(user='root', password='test',
                      host='localhost',
                      database='technical')
# query blob data form the authors table
cursor = db_config.cursor()

try:
    sampleNum=sampleNum+1;
    query = "SELECT file FROM test WHERE id=%s"
    cursor.execute(query,(sampleNum,))
    photo = cursor.fetchone()[0]
    write_file(photo, 'User'+str(sampleNum)+'.jpg')

except AttributeError as e:
    print(e)
finally:
    cursor.close()

上面代码的目标

上面的代码允许我从 MySQL 中获取存储为BLOB的图像并将其保存到保存.py脚本的文件夹中。

它工作正常!

与 .docx 类似的代码

import mysql.connector
import sys

def write_file(data, filename):
    with open(filename, 'wb') as f:
        f.write(data)

sampleNum = 0;
db_config = mysql.connector.connect(user='root', password='test',
                      host='localhost',
                      database='technical')
cursor = db_config.cursor()

try:
    sampleNum=sampleNum+1;
    query = "SELECT fileAttachment FROM document_control WHERE id=%s"
    cursor.execute(query,(sampleNum,))
    file = cursor.fetchone()[0]
    write_file(file, 'User'+str(sampleNum)+'.docx')

except AttributeError as e:
    print(e)
finally:
    cursor.close()

在这里,我试图从存储为BLOB MySQL 中提取并保存 docx 文件,但它不起作用。

上述脚本的输出如下:

    f.write(data)
TypeError: a bytes-like object is required, not 'str'

如何从 MySQL 中提取 .docx 文件?

根据您提到的插入查询

insert into document_control (fileattachment) values ('C:/Users/<user>/Desktop/Weekly Checks.xlsx');

看来您只是在数据库中插入文件路径。

您必须使用LOAD_FILE在数据库 blob 对象中插入实际文件。 如何使用 LOAD_FILE 将文件加载到 MySQL blob 中?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM