конвертировать Python 2 в Python 3: читать файл изображения - PullRequest
0 голосов
/ 22 сентября 2018

В Python 2 я использую:

import MySQLdb

pathFileName = "/Users/ldam/Documents/test.png"
f = open(pathFileName, 'r')
img = f.read()
f.close()
conn = MySQLdb.connect(host='localhost', user='user', passwd='password', db='db')
cursor = conn.cursor()
inssql = "INSERT Data_images(data) VALUES('%s')"
cursor.execute(inssql % MySQLdb.escape_string(img))
cursor.close()
conn.close()

Аркодирование к комментариям внизу, в Python 3 я читаю файл в байтах:

f = open(pathFileName, 'rb')
img = f.read()
f.close()
conn = MySQLdb.connect(host='localhost', user='user', passwd='password', db='db')
cursor = conn.cursor()
inssql = "INSERT Data_images(data) VALUES('%s')"
cursor.execute(inssql % MySQLdb.escape_string(img))
cursor.close()
conn.close()

Однако я пробовал много способоввставить данные img в таблицу базы данных, но ни одна из них не работает.Может кто-нибудь помочь мне сохранить данные IMG в базу данных.Большое спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Спасибо всем утверждениям в комментариях, что файл изображения должен быть открыт только как байтовый объект, я не пытался преобразовать его так, как я, наконец, нашел способ сохранить данные изображения следующим образом:

import base64
f = open(pathFileName, 'rb')
img = base64.b64encode(f.read())
f.close()
conn = MySQLdb.connect(host='localhost', user='user', passwd='password', db='db')
cursor = conn.cursor()
inssql = "INSERT Data_images(data) VALUES('%s')"
cursor.execute(inssql % MySQLdb.escape_string(img).decode())
cursor.close()
conn.close()

Преобразовать эти данные для обработки так же, как данные, сохраненные в python 2, довольно просто: base64.b64decode(imgFromDB)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...