У меня есть база данных MySQL с таблицей, которая содержит большие двоичные объекты (тип LONGBLOB для MySQL). Я вставляю эти BLOB в таблицу с помощью SQLAlchemy (версия 1.3.9, Python 3.6.8 Anaconda). BLOB являются результатом массива Numpy (версия 1.17.2) размером (1216,1216,3), который представляет изображение.
Чтобы преобразовать эти изображения в байты, я использую метод Numpy .tobytes()
и затем используйте SQLAlchemy для фиксации его в базе данных. После проверки конкретной таблицы в моей базе данных с помощью PHPMyAdmin я получаю следующую ошибку: PHPMyAdmin Internal Server Error . Хотя он говорит, что кажется, что соединение потеряно, все остальные таблицы доступны без каких-либо проблем.
Более того, я также все еще могу получить все записи в таблице с помощью SQLAlchemy (и других библиотек),Размер BLOB-объекта составляет 8,5 МБ, что должно быть хорошо, так как LONGBLOB может содержать 4 ГБ, поэтому я предполагаю, что это не размер изображения, вызывающего проблемы.
При вставке записи SQLAlchemy показывает следующеепредупреждение: /home/aaa/.conda/envs/AAA/lib/python3.6/site-packages/pymysql/cursors.py:170: Warning: (1300, "Invalid utf8mb4 character string: '900130'")
result = self._query(query)
Это то, что я пробовал Googling, но не смог найти ничего, что помогло. Сортировка базы данных и таблицы: utf8mb4_unicode_ci . Насколько я знаю, не удалось установить параметры сортировки для конкретного поля, поскольку это большой двоичный объект.
В прошлом у меня не было проблем с хранением изображений в виде больших двоичных объектов в базе данных MySQL, поэтому я впотеря на то, что делать сейчас, чтобы решить эту проблему. Неправильно ли использовать Numpy .tobytes()
для получения байтов массива Numpy? Пожалуйста, сообщите.