Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Загрузка изображения в базу данных SQLite

Загрузка изображения в базу данных SQLite

В этой статье, мы собираемся вставить данные изображения в базу данных SQLite. Следует отметить, что некоторые программисты выступают против помещения изображений в базы данных. Здесь мы только покажем, как делать это. Мы не станем останавливаться на технических проблемах того, сохранять ли изображения в базах данных или нет. Это применяется в зависимости от ситуации, когда эффективнее сохранять в базе чем в файлах.

sqlite> CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);

Для этого примера, мы создаём новую таблицу, называемую Images. Для изображений мы используем тип данных BLOB, который расшифровывается как Binary Large Objects.

#!/usr/bin/python # -*- coding: utf-8 -*- # Подключаем библиотеки import sqlite3 as lite import sys # Функция открытия изображения в бинарном режиме def readImage(filename): try: fin = open(filename, "rb") img = fin.read() return img except IOError, e: # В случае ошибки, выводим ее текст print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) finally: if fin: # Закрываем подключение с файлом fin.close() try: # Открываем базу данных con = lite.connect('test.db') cur = con.cursor() # Получаем бинарные данные нашего файла data = readImage("woman.jpg") # Конвертируем данные binary = lite.Binary(data) # Готовим запрос в базу cur.execute("INSERT INTO Images(Data) VALUES (?)", (binary,) ) # Выполняем запрос con.commit() # В случаи ошибки выводим ее текст. except lite.Error, e: if con: con.rollback() print "Error %s:" % e.args[0] sys.exit(1) finally: if con: # Закрываем подключение с базой данных con.close()

В этом скрипте, мы читаем изображение из текущей папки в бинарном режиме и записываем его в таблицу Images базы данных SQLite test.db.

try: fin = open("woman.jpg", "rb") img = fin.read() return img

Мы читаем бинарные данные из изображения. Мы имеем JPG-изображение, названное woman.jpg.

binary = lite.Binary(data)

Данные изображения конвертируются в данные объекта SQLite Binary.

cur.execute("INSERT INTO Images(Data) VALUES (?)", (binary,) )

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

Хороший сайт для охотников и любителей огнестрельного оружия в Украине. Выполнения профессионального тюнинга АКМ в Украине http://bullpup.com.ua/catalog/ak_47_akm/ имея весь ассортимент необходимых запчастей. Качество и доступные цены превыше всего.