English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основное руководство по SQLite

Дополнительное руководство по SQLite

Интерфейс программы SQLite

SQLite Python

Установка

SQLite3 может интегрироваться с Python с помощью модуля sqlite3. Модуль sqlite3 написан Gerhard Haring. Он предоставляет интерфейс SQL, совместимый с спецификацией DB-API 2.0, описанной в PEP 249. Вам не нужно устанавливать этот модуль отдельно, так как он включен по умолчанию в версии Python 2.5.x и выше.

Для использования модуля sqlite3 вам сначала необходимо создать объект подключения, представляющий базу данных, а затем, по вашему выбору, создать объект курсора, который поможет вам выполнять все SQL-запросы.

API модуля Python sqlite3

Ниже перечислены важные программы модуля sqlite3, которые могут удовлетворить ваши потребности в использовании SQLite-базы данных в Python-программах. Если вам нужно узнать больше деталей, пожалуйста, ознакомьтесь с официальной документацией модуля Python sqlite3.

НомерAPI & Описание
1sqlite3.connect(database [,timeout ,other optional arguments])

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

Когда база данных доступна для множества подключений и одна из них изменяет базу данных, SQLite-база данных блокируется до завершения транзакции. Параметр timeout указывает на продолжительность ожидания подключения до блокировки, до возникновения исключения или разрыва подключения. Значение по умолчанию для параметра timeout составляет 5.0 (5 секунд).

Если указанное имя базы данных filename не существует, этот вызов создаст базу данных. Если вы не хотите создавать базу данных в текущем каталоге, вы можете указать имя файла с путем, чтобы создать базу данных в любом месте.

2connection.cursor([cursorClass])

Этот пример кода создает cursorЭтот метод используется в Python для работы с базами данных. Этот метод принимает единственный опциональный параметр cursorClass. Если этот параметр предоставлен, то он должен быть расширением класса cursor из sqlite3.

3cursor.execute(sql [, optional parameters])

Этот пример кода выполняет один SQL-запрос. Этот SQL-запрос может быть параметризирован (т.е. использовать占ачники вместо текста SQL). Модуль sqlite3 поддерживает два типа占ачников: вопросительный знак и именованные占ачники (нaming style).

Например: cursor.execute("insert into people values (?, ?)", (who, age))

4connection.execute(sql [, optional parameters])

Этот пример кода является быстрым доступом к методу, выполняемому вышеупомянутым объектом курсора (cursor), который создает промежуточный объект курсора с помощью метода курсора (cursor) и затем вызывает метод execute курсора с переданными параметрами.

5cursor.executemany(sql, seq_of_parameters)

Этот пример кода выполняет один SQL-запрос для всех параметров или маппингов в seq_of_parameters.

6connection.executemany(sql[, parameters])

Этот пример кода представляет собой быстрый доступ к промежуточному объекту курсора, созданному методом вызова курсора (cursor), а затем вызывается метод executemany курсора с переданными параметрами.

7cursor.executescript(sql_script)

Этот пример кода выполняет несколько SQL-запросов после получения скрипта. Сначала он выполняет команду COMMIT, а затем выполняет传入 как параметр SQL-скрипт. Все SQL-запросы должны быть разделены точкой с запятой ;.

8connection.executescript(sql_script)

Этот例行ная программа является кратким способом создания промежуточного объекта курсора, созданного вызовом метода cursor, а затем вызовом метода executescript курсора с данными параметрами.

9connection.total_changes()

Этот例行ная программа возвращает общее количество строк, измененных, добавленных или удаленных с момента последнего открытия соединения с базой данных.

10connection.commit()

Этот метод коммитит текущую транзакцию. Если вы не вызывали этот метод, любые действия, которые вы выполняли с момента последнего вызова метода commit(), будут недоступны для других соединений с базой данных.

11connection.rollback()

Этот метод откатывает изменения в базе данных с момента последнего вызова метода commit().

12connection.close()

Этот метод закрывает соединение с базой данных. Обратите внимание, что это не вызывает автоматически commit(). Если вы не вызывали метод commit() ранее, все ваши изменения будут потеряны!

13cursor.fetchone()

Этот метод��取查询结果集中的 следующую строку, возвращая ее в виде одного элемента последовательности. Если больше данных нет, возвращает None.

14cursor.fetchmany([size=cursor.arraysize])

Этот метод��取查询 результат集中的 следующую группу строк, возвращая их в виде списка. Если нет больше доступных строк, возвращает пустой список. Этот метод пытается получить столько строк, сколько указано параметром size.

15cursor.fetchall()

Этот例行ная программа��取查询结果集中所有(оставшиеся)строки и возвращает их в виде списка. Если нет доступных строк, возвращает пустой список.

Подключение к базе данных

Ниже приведен код на Python, показывающий, как подключиться к существующей базе данных. Если база данных не существует, то она будет создана, и в конце вернется объект базы данных.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully"

Здесь вы также можете скопировать имя базы данных в определенное имя :memory:Таким образом, база данных будет создана в RAM. Давайте запустим上面的 программу и создадим нашу базу данных в текущей директории test.dbВы можете изменить путь по своему усмотрению. Сохраните上面的 код в файл sqlite.py и выполните его как показано ниже. Если база данных успешно создана, то будет отображено следующее сообщение:

$chmod +x sqlite.py
$./sqlite.py
Успешно открыта база данных

Создание таблицы

Ниже приведен пример Python-кода, который будет использоваться для создания таблицы в созданной ранее базе данных:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully"
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print "Table created successfully"
conn.commit()
conn.close()

При выполнении вышеуказанной программы она создаст данные в базе данных: test.db Создание таблицы COMPANY в базе данных, и будет отображено следующее сообщение:

База данных открыта успешно
Таблица успешно создана

Операция INSERT

Ниже приведен пример Python-программы, который показывает, как создать записи в созданной ранее таблице COMPANY:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (1, 'Paul', 32, 'California', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
conn.commit()
print "Records created successfully"
conn.close()

При выполнении вышеуказанной программы она создаст данные в таблице COMPANY и отобразит следующие строки:

База данных открыта успешно
Записи успешно созданы

Операция SELECT

Ниже приведен пример Python-программы, который показывает, как получить и отобразить записи из созданной ранее таблицы COMPANY:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

Во время выполнения программы, она генерирует следующие результаты:

База данных открыта успешно
ID =  1
NAME =  Paul
ADDRESS =  California
СALARY =  20000.0
ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0
ID =  3
NAME =  Teddy
ADDRESS =  Norway
СALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
СALARY =  65000.0
Операция выполнена успешно

Операция UPDATE

Ниже приведен пример Python-кода, который показывает, как использовать оператор UPDATE для обновления любой записи и как получить и отобразить обновленные записи из таблицы COMPANY:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print "Общее количество обновленных строк: ", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

Во время выполнения программы, она генерирует следующие результаты:

База данных открыта успешно
Общее количество обновленных строк: 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0
ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0
ID =  3
NAME =  Teddy
ADDRESS =  Norway
СALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
СALARY =  65000.0
Операция выполнена успешно

Операция DELETE

Ниже приведен пример Python-кода, который показывает, как использовать оператор DELETE для удаления любой записи и как получить и отобразить оставшиеся записи из таблицы COMPANY:

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully"
c.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Общее количество удаленных строк: ", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully"
conn.close()

Во время выполнения программы, она генерирует следующие результаты:

База данных открыта успешно
Общее количество удаленных строк: 1
ID =  1
NAME =  Paul
ADDRESS =  California
СALARY =  20000.0
ID =  3
NAME =  Teddy
ADDRESS =  Norway
СALARY =  20000.0
ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
СALARY =  65000.0
Операция выполнена успешно