Мне удалось заставить мой код работать и я могу успешно преобразовать изображение в байты, сохранить его в базе данных сервера SQL и получить его, извлекая байты и воспроизводя изображение.
Существует только одна проблема - это работает, только если я использую тип данных nvarchar (max) для столбца, в котором хранятся байты изображения. Я получаю ошибки, когда использую varbinary (max) или когда я решаю ошибку, она просто не извлекает укусы и не преобразует их должным образом - любые указания о том, что я могу делать неправильно, поскольку у меня такое ощущение, что это что-то маленькое. Обновленный код ниже - это то, что я делаю, используя работающий nvarchar (max).
import pypyodbc
import base64
from base64 import *
connection = pypyodbc.connect('Driver=SQL Server;'
'Server=DESKTOP-MSSQLSERVER;'
'Database=Test;'
'Trusted_Connection=yes;'
)
cursor = connection.cursor()
a = 'bob@bob.com'
b = 'mack jones'
filename = 'bookingsuccessful.PNG'
image = open(filename, 'rb')
image_read = image.read()
image_64_encode = base64.encodebytes(image_read)
image.close()
SQLCommand = ("INSERT INTO Validation(email, myname, photo) VALUES(?,?,?)")
Values = [a,b,image_64_encode]
cursor.execute(SQLCommand, Values)
connection.commit()
SQLCommand = ("SELECT Photo FROM validation")
cursor.execute(SQLCommand)
data = cursor.fetchone()[0]
data = bytes(data.strip("\n"), 'utf-8')
image_64_decode = base64.decodebytes(data)
image_result = open('testfile.gif', 'wb')
image_result.write(image_64_decode)
image_result.close()
connection.close()