Быстрый в изучении - мощный в программировании
Скрипт ИНВЕСТОР на Python

Попробуйте себя в качестве инвестора имея в помощники мощный алгоритм советника на Python...

Все уроки по PyQt5

PyQt5 реализован как комплект Python-модулей. Он включает в себя около 620 классов и 6000 функций и методов...

Скрипт отправки SMS через Python

Была задача отправить SMS-ки большому списку номеров телефона с уточнением цены за всю рассылку "До" ее отправки...

SQLite

Подписаться на эту рубрику по RSS

Необходимо заметить, что база данных SQLite не предназначена для проектов, предъявляющих требования к защите данных и разграничению прав доступа для нескольких пользователей. Тем не менее, для небольших проектов SQLite является хорошей заменой полноценной базы данных.

Метаданные в SQLite

Метаданные – это информация о данных в базе данных. Метаданные в SQLite содержат в себе информацию о таблицах и столбцах, в которых мы храним данные. Количество строк под воздействием оператора SQL – это метаданные. Количество строк и столбцов, возвращаемые в результирующий набор, также относятся к метаданным. Метаданные в SQLite могут быть получены с использованием команды PRAGMA. Объекты SQLite могут иметь атрибуты, которые являются метаданными. Наконец, мы также можем достать определённые метаданные от запроса таблицы sqlite_master системы SQLite.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:
    cur = con.cursor()    
    cur.execute('PRAGMA table_info(Cars)')
    data = cur.fetchall()
    
    for d in data:
        print d[0], d[1], d[2]

В этом примере, мы пускаем в обращение команду PRAGMA table_info(tableName), чтобы получить некоторую метаинформацию о нашей таблице Cars.

Далее...

В этой статье, мы собираемся выполнять обратную операцию. Мы будем читать изображение из таблицы базы данных. В прошлой статье мы записали данные изображения в таблицу, теперь мы превратим эти данные обратно в изображение.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def writeImage(data):
    try:
        fout = open('woman2.jpg','wb')
        fout.write(data)
    
    except IOError, e:    
        print "Error %d: %s" % (e.args[0], e.args[1])
        sys.exit(1)
        
    finally:
        if fout:
            fout.close()       
    
try:
    con = lite.connect('test.db')
    cur = con.cursor()    
    cur.execute("SELECT Data FROM Images LIMIT 1")
    data = cur.fetchone()[0]
    writeImage(data)
    
except lite.Error, e:
    print "Error %s:" % e.args[0]
    sys.exit(1)
    
finally:
    if con:
        con.close()

Далее...

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

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

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

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

Далее...

Вывод данных из таблицы SQLite

В предыдущей статьи [часть 2] мы рассмотрели моменты создания таблицы в базу данных и внесения данных в эту таблицу. В данной статье покажем пример как получить данные из таблицы.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:    
    cur = con.cursor()    
    cur.execute("SELECT * FROM Cars")
    rows = cur.fetchall()
 
    for row in rows:
        print row

В этом примере, мы извлекаем все данные из таблицы Cars.

Далее...

Занесение данных в таблицу SQLite

Мы создадим таблицу Cars и внесем несколько строк данных в неё.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
# Подключаемся к базе данных
con = lite.connect('test.db')
 
with con:
    cur = con.cursor()    
    # Создаем таблицу
    cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)")
    # Вносим данные
    cur.execute("INSERT INTO Cars VALUES(1, 'Audi', 52642)")
    cur.execute("INSERT INTO Cars VALUES(2, 'Mercedes', 57127)")
    cur.execute("INSERT INTO Cars VALUES(3, 'Skoda', 9000)")
    cur.execute("INSERT INTO Cars VALUES(4, 'Volvo', 29000)")
    cur.execute("INSERT INTO Cars VALUES(5, 'Bentley', 350000)")
    cur.execute("INSERT INTO Cars VALUES(6, 'Citroen', 21000)")
    cur.execute("INSERT INTO Cars VALUES(7, 'Hummer', 41400)")
    cur.execute("INSERT INTO Cars VALUES(8, 'Volkswagen', 21600)")

Данный скрипт создаёт таблицу Cars и вставляет 8 строк в таблицу.

cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)")

Этот SQL-запрос создает новую таблицу Cars. Таблица имеет три столбца.

cur.execute("INSERT INTO Cars VALUES(1,'Audi',52642)")
cur.execute("INSERT INTO Cars VALUES(2,'Mercedes',57127)")

Далее...

Руководство по SQLite Python

Это руководство по программированию в Python используя базы данных SQLite. Оно покрывает основы программирования SQLite с помощью языка Python.

Необходимые условия

Чтобы работать с примерами их статьи, мы должны иметь установленный в системе язык Python, базу данных SQLite, привязку к языку pysqlite и инструмент командной строки sqlite3. Если мы имеем Python 2.5+, тогда нам необходимо только установить инструмент командной строки sqlite3. Как библиотека SQLite, так и привязка к языку pysqlite встроены в язык Python.

$ python
Python 2.7.3 (default, Jan  2 2013, 16:53:07) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.7.13'

Далее...

Согласно спецификации DB-API 2.0 после создания объекта соединения необходимо создать объект-курсор. Все дальнейшие запросы должны производиться через этот объект. Создание объекта-курсора производится с помощью метода cursor(). Для выполнения запроса к базе данных предназначены следующие методы объекта-курсора:

close() - закрывает объект-курсор

executescript(<Запросы SQL через точку с запятой>) - выполняет несколько SQL запросов за один раз. Если в процессе выполнения запросов возникает ошибка, то метод возбуждается исключение. В качестве примера создадим базу данных и три таблицы в ней:

# -*- coding: utf-8 -*-
 
import sqlite3
 
con = sqlite3.connect("catalog.db")
cur = con.cursor()    # Создаем объект-курсор
 
sql = """\
CREATE TABLE user (
    id_user INTEGER PRIMARY KEY AUTOINCREMENT,
    email text,
    passw text
);
 
CREATE TABLE rubr (
    id_rubr INTEGER PRIMARY KEY AUTOINCREMENT,
    name_rubr TEXT
);
 
CREATE TABLE site (
    id_site INTEGER PRIMARY KEY AUTOINCREMENT,
    is_user INTEGER,
    id_rubr INTEGER,
    url TEXT,
    title TEXT,
    iq INTEGER
);
"""
 
try:    # обработка исключения
    cur.executescript(sql) # Выполняем SQL-запрос
except sqlite.DatabaseError, err:
    print u"Ошибка:", err
else:
    print u"Запрос успешно выполнен"
cur.close()    # Закрываем объект-курсора
con.close()    # Закрываем соединение
raw_input()
Далее...

SQLite python

Для создания и открытия базы данных используется функция connect(). Функция имеет следующий формат:

connect(database[, timeout][, isolation_level][, detect_types][, factory])

В параметре database указывается абсолютный или относительный путь к базе данных. Если база данных не существует, то она просто открывается без удаления имеющихся данных. Вместо пути к базе данных можно указать значение :memory:, которое означает, что база данных будут удалены.

Все остальные параметры являются необязательными и могут быть указаны в произвольном порядке путем присвоения значения названию параметра. Необязательный параметр timeout задает время ожидания снятия блокировки с открываемой базы данных. По умолчанию значение параметра timeout равно пяти секундам. Предназначение остальных параметров мы рассмотрим немного позже.

Далее...

SQLite Python

В предыдущих статьях мы рассматривали работу с файлами и научились сохранять объекты с доступом по ключу с помощью модуля shelve. При сохранении объектов этот модуль использует возможности модуля pickle для сериализации объекта и модуль anybm для записи получившейся строки по ключу в файл. Если необходимо сохранять в файл просто строки, то можно сразу воспользоваться модулем anybm. Однако если объем сохраняемых данных велик и требуется удобный доступ к ним, то вместо этого модуля лучше использовать базы данных.

Начиная с версии 2.5, в состав стандартной библиотеки Python входит модуль sqlite3, позволяющий работать с базой данных SQLite. Для использования этой базы данных нет необходимости устанавливать сервер, ожидающий запросы на каком-либо порту, т.к. SQLite напрямую работает с файлом базы данных.

Далее...

python sqlite3

Модуль sqlite3, входит в состав стандартной библиотеки Python, начиная с версии 2.5, и в дополнительной установке не нуждается. Если необходимо получить доступ к SQLite в предыдущих версиях Python, то следует воспользоваться модулем pysqlite. Этот модуль не входит в состав стандартной библиотеки, поэтому его придется устанавливать отдельно.

Для работы с базами данных в языке Python существует единый интерфейс доступа. Все разработчики модулей, осуществляющих связь базы данных с Python, должны придерживаться спецификации DB-API (DataBase Application Program Interface). Это спецификация более интересна для разработчиков модулей, чем для прикладных программистов, поэтому мы не будем ее подробно рассматривать.

Модуль sqlite3 поддерживает спецификацию DB-API 2.0, а так же предоставляет некоторые нестандартные возможности. Поэтому, изучив методы и атрибуты этого модуля, вы получите достаточно подробное представление о спецификации DB API 2.0 и сможете в дальнейшем работать с другой базой данных. Получить номер спецификации, поддерживаемой модулем, можно с помощью атрибута apilevel:

Далее...