Я пытаюсь сжать файл в Python, загрузить эти данные в базу данных MySQL, а затем загрузить / распаковать в C#. Вот как я сжимаю файл:
from gzip import GzipFile
from io import BytesIO
def gzip_str(data):
sio = BytesIO()
with GzipFile(fileobj=sio, mode='wb') as gzip:
gzip.write(data)
return sio.getvalue()
И затем файл загружается в базу данных, делая что-то похожее на:
import mysql.connector as mysql
cnx = mysql.connect(**config)
cursor = cnx.cursor()
data = gzip_str( open("filepath.csv", "rb").read() )
cursor.execute("INSERT INTO table (data) VALUES (%s)", (data))
cnx.commit()
Я получаю сообщение об ошибке DatabaseError: Invalid utf8mb4 character string: '8B0800'
. Заголовок сжатых данных gzip начинается с \x8b\x08\x00&
, поэтому кажется, что он не распознается как допустимый символ utf8mb4. Есть ли способ обойти это? Мне нужен этот заголовок без изменений, чтобы он правильно распаковался. Столбец data
имеет тип LONGBLOB
, поэтому я даже не уверен, почему его все равно нужно кодировать, разве я не должен просто хранить байтовые данные?