将jpg图像转换为blob并将其存储在.sql文件中

ioekq8ef  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(529)

我将jpg图像存储到mysql数据库中。
我使用blob类型在mysql数据库中存储jpg图像。
我使用mysqldump生成一个.sql文件。
我使用.sql文件作为备份并还原数据库。
如何将jpg直接转换为.sql文件?
我尝试了以下python代码:

import os

import base64

archivo_destino = ".\\portada_sql\\archivo.sql"

imagen_origen = ".\\libros_nuevos_jpg\\03000\\000.jpg"

archivo = open(archivo_destino, 'w')

imageFile = open(imagen_origen, "rb") 

mi_blob = base64.b64encode(imageFile.read())

archivo.write("INSERT INTO libro_portada VALUES ('"+mi_blob+"');")

archivo.close()

但它不起作用。
是否可以创建一个sql文件,其中的图像存储为blob usign python?
我尽量避免:
将jpg上传到服务器
导入jpg到mysql
将mysql导出到.sql文件
我想直接生成.sql文件。
有可能吗?
1magnus:我提到php是因为我也可以使用php,如果php可以的话。
2埃里克:从上面提到的python代码中,我得到:
插入libro_portada值('b'/9j/4rivrxhpzgaatu0akgaaagabwesaaaaaaaaaaaaae');
从mysqldump我得到:
插入 libro_portada 值('ÿ\؀ÿ\ကjexif\0\0mm\0*\0\0\0\0\0\0\0\0\0\0\0\0\z\0\0\0\0\0\0\0\0\0b');

jk9hmnmh

jk9hmnmh1#

我知道在mysql中存储文件是很疯狂的,但我在这个项目中只是作为一个猴子代码工作。
最后我使用了mysql load_file()函数
我上传了我的jpgs到服务器,并使用mysql load\u file()导入mysql
有很多文件需要上传,所以我创建了一个python脚本来创建sql代码并将其存储在sql文件中。


# coding=utf-8

# ! python3

# crea el comando mysql para importar los archivos .jpg a mysql

# para cada libro crea un archivo sql

# para cada archivo crea un comando insert

# INSERT INTO  archivo  SET libro_fk =,orden =,nombre =,archivo =,mime_type ="image/jpeg",numero_pagina =,libro_completo =0;

import os

libros = [
"K0LEM",
"K3J2S"
]

ids = [

"2390",
"2399"
]

total = len(libros)

# para cada libro...

for i in range(total):
    #crearemos un archivo sql para cada libro
    archivo_destino = ".\\archivos_sql\\" + ids[i] + ".sql"
    archivo = open(archivo_destino, 'w')
    carpeta_a_explorar = ".\\libros_nuevos_jpg\\" + libros[i] + "\\"
    archivos = os.listdir(carpeta_a_explorar)
    #crear una lista con los archivos
    archivos.sort()
    #ordena la lista
    cuantos_archivos = len(archivos)
    #cuantos archivos
    #
    # para cada archivo encontrado se creara un insert...
    #
    for jpg_file in range(cuantos_archivos):
        archivo.write("INSERT INTO  archivo  SET libro_fk ="+ ids[i] +",orden = "+str(jpg_file)+",nombre ='"+ archivos[jpg_file] +"',archivo = LOAD_FILE('/var/lib/mysql-files/"+ libros[i] +"/"+ archivos[jpg_file] +"'),mime_type ='image/jpeg',numero_pagina = "+str(jpg_file)+",libro_completo =0;")
        archivo.write("\n")
    archivo.close()

结果是一个sql文件,每行使用mysql load\u file()插入一个insert命令

INSERT INTO  archivo  SET libro_fk =2390,orden = 0,nombre ='000.jpg',archivo = LOAD_FILE('/var/lib/mysql-files/K0LEM/000.jpg'),mime_type ='image/jpeg',numero_pagina = 0,libro_completo =0;
INSERT INTO  archivo  SET libro_fk =2390,orden = 1,nombre ='001.jpg',archivo = LOAD_FILE('/var/lib/mysql-files/K0LEM/001.jpg'),mime_type ='image/jpeg',numero_pagina = 1,libro_completo =0;
INSERT INTO  archivo  SET libro_fk =2390,orden = 2,nombre ='002.jpg',archivo = LOAD_FILE('/var/lib/mysql-files/K0LEM/002.jpg'),mime_type ='image/jpeg',numero_pagina = 2,libro_completo =0;

我将jpg文件存储在/var/lib/mysql files/中,以便mysql可以导入它。

相关问题