将文件存储到MySQL

来源:互联网 发布:网络语芭比是什么意思 编辑:程序博客网 时间:2024/05/21 16:58

一开始,我是拒绝这样做的,因为占数据库空间,按道理,文件应该存储到本地,数据库存储路径更好。


# coding=utf-8""" 测试代码(mysql存储文件) """from MySql import MySQL
# TODO 需要自行替换的字段
DBName = 'xxx'# 数据库名称
columnName = 'xxxx'# 存储文件字段名称,类型:longblob
inDoc = 'xxxx'# 需要存入数据库的文件路径
outDoc = 'xxxx'# 从数据库读取后恢复的文件路径
def connect():    """ 连接数据库 """    mysql = MySQL()    mysql.connect('localhost', 'root', 'root', 'ris')    return mysqldef openFile(fileName):    """ 打开文件,读取二进制格式,返回处理过的字符串 """    with open(fileName, 'rb') as f:        content = 's'.join([str(ele) for ele in f.read()])        f.close()    return content or ''def dealDBFileData(data):    """ 对从数据库fetchAll的二进制进行处理 """    temp = data[0][1].decode('ascii').split('s')    return bytes([int(ele) for ele in temp])if __name__ == '__main__':    cursor = connect()    # 打开文件,读取二进制    text = openFile(inDoc)    # 将数据存储到数据库    if cursor.insert(DBName, {column: text}):        cursor.commit()        print('insert success')    else:        print('insert error->', cursor.error)    # 从数据库获取数据    if cursor.query('select * from DBName where id=0'):        res = cursor.fetchAll()        # 对读取的二进制进行处理        text = dealDBFileData(res)        # 将二进制写入新文件        with open(outDoc, 'wb') as f2:            f2.write(text)            f2.close()


原创粉丝点击