将 jpg 图像转换为 blob 并将其存储在 .sql 文件中
Convert jpg images to blob and store it in a .sql file
我将 jpg 图像存储到 mysql 数据库中。
我在mysql数据库中使用BLOB类型存储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文件。
有可能吗?
1。
马格纳斯:
我提到 php 是因为我也可以使用 php,如果可以使用 php。
2。
埃里克:
从上面提到的 python 代码,我得到:
插入 libro_portada 值('b'/9j/4RivRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAE'');
从 mysqldump 我得到:
插入 libro_portada
值 ('ÿ\ÿÿ\ကJExif[=54=][=54=]MM[=54=]*[=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=]\Z[=55=][=55=][=55=][=55=][=55=][=55=][=55=]b');
我知道在 mysql 中存储文件很疯狂,但我在这个项目中只作为猴子代码工作。
最后我使用了 MYSQL LOAD_FILE() 函数
我将我的 jpg 上传到服务器并导入到 mysql 使用:MYSQL LOAD_FILE()
有大量文件要上传,所以我创建了一个 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_FILE()
插入命令
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 可以导入它。
我将 jpg 图像存储到 mysql 数据库中。
我在mysql数据库中使用BLOB类型存储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文件。
有可能吗?
1。 马格纳斯: 我提到 php 是因为我也可以使用 php,如果可以使用 php。
2。 埃里克: 从上面提到的 python 代码,我得到:
插入 libro_portada 值('b'/9j/4RivRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAE'');
从 mysqldump 我得到:
插入 libro_portada
值 ('ÿ\ÿÿ\ကJExif[=54=][=54=]MM[=54=]*[=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=][=55=]\Z[=55=][=55=][=55=][=55=][=55=][=55=][=55=]b');
我知道在 mysql 中存储文件很疯狂,但我在这个项目中只作为猴子代码工作。
最后我使用了 MYSQL LOAD_FILE() 函数
我将我的 jpg 上传到服务器并导入到 mysql 使用:MYSQL LOAD_FILE()
有大量文件要上传,所以我创建了一个 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_FILE()
插入命令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 可以导入它。