Как вставить/извлечь файл, хранящийся как BLOB в базе данных MySQL, с помощью python

Я хочу написать скрипт Python, который заполняет базу данных некоторой информацией. Один из столбцов в моей таблице — это BLOB, в котором я хотел бы сохранить файл для каждой записи.

Как я могу прочитать файл (двоичный) и вставить его в БД с помощью python? Точно так же, как я могу получить его и записать этот файл обратно в произвольное место на жестком диске?


person RyanY    schedule 18.08.2009    source источник


Ответы (2)


thedata = open('thefile', 'rb').read()
sql = "INSERT INTO sometable (theblobcolumn) VALUES (%s)"
cursor.execute(sql, (thedata,))

Этот код, конечно, работает, как написано, только если в вашей таблице есть только столбец BLOB, и вы хотите сделать INSERT, но, конечно, вы можете легко настроить его, чтобы добавить больше столбцов, использовать UPDATE вместо INSERT или что-то еще. точно надо сделать.

Я также предполагаю, что ваш файл является двоичным, а не текстовым и т. д.; опять же, если мои догадки неверны, вам легко соответствующим образом изменить приведенный выше код.

Какой-то SELECT на cursor.execute, а затем какая-то выборка из курсора — это то, как вы извлекаете данные BLOB, точно так же, как вы извлекаете данные любого другого типа.

person Alex Martelli    schedule 18.08.2009
comment
Кажется, MySQL начал предупреждать о подобных вещах. Теперь нужно использовать ... ЗНАЧЕНИЯ (_binary %s) - person Wodin; 26.04.2016

Вы можете вставлять и читать BLOB из БД, как и любой другой тип столбца. С точки зрения API базы данных в BLOB нет ничего особенного.

person Community    schedule 18.08.2009
comment
Если блоб имеет pdf? - person Chaitanya Bhojne; 28.04.2020