Быстрый в изучении - мощный в программировании
>> 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/ имея весь ассортимент необходимых запчастей. Качество и доступные цены превыше всего.