вторник, 20 сентября 2011 г.

SQLite - это си-библиотека

SQLite - это си-библиотека, которая поддерживает лёгкую СУБД, которая не требует для работы специального сервера СУБД и позволяет обращаться к базе данных, используя специальный диалект языка SQL. Любые приложения могут использовать SQLite для внутреннего хранения данных.

Чтобы использовать модуль sqlite3, необходимо сначала создать объект Connection, который представляет базу данных. Например, данные будут храниться в файле /tmp/example:


conn = sqlite3.connect('/tmp/example')


Если имя файла указано как ":memory:", будет создана база данных в оперативной памяти.

Когда есть объект Connection, его методом cursor() можно создать объект Cursor и затем вызвать его метод execute(), чтобы выполнить команду (запрос) SQL, например, чтобы создать таблицу и заполнить её данными. Изменения сохраняются методом commit() объекта Connection, а объект Cursor закрывается его методом close().

Для подстановки значений в текст запросов следует использовать специально подготовленные кортежи значений и второй параметр метода execute(), а также знаки "?" в тексте самих запросов, например:


for t in (('1', 'first', '2006-03-28'),
('2', 'second', '2007-03-28'),
):
c.execute('insert into stocks values (?,?,?)', t)


Для разбора значений, полученных в результате выполнения запроса SELECT, можно использовать цикл for, работая с объектом Cursor как с обычным iterable-объектом.

Используя некоторые методы объекта Connection, можно не создавать объекты Cursor явно, делая код более кратким.

Пример:


# -*- coding: utf-8 -*-
import codecs, sys
outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf

import sqlite3

conn = sqlite3.connect('mydb') # создаст файл, если его нет
conn.execute("create table if not exists person(firstname, spots)") # создаст таблицу, если её нет
data = [(u'Иван', 10), (u'Марья', 20)] # данные для записи в базу данных
conn.executemany("insert into person(firstname, spots) values (?, ?)", data) # запись в базу данных
conn.commit() # сохранение изменений в базе данных
conn.close() # закрытие базы данных

conn = sqlite3.connect('mydb') # открытие базы данных
for row in conn.execute("select * from person"): # обычный запрос
print row[0], row[1]
print '==='
conn.row_factory = sqlite3.Row # создание фабрики строк
cur = conn.cursor() # создание курсора
cur.execute("select * from person")
for row in cur:
print row['firstname'], row[1]
conn.close() # закрытие базы данных



Материал взят с сайта : http://forum.script-coding.com/viewtopic.php?id=2532

Комментариев нет:

Отправить комментарий