Учебники

SQLite — Python

В этой главе вы узнаете, как использовать SQLite в программах на Python.

Монтаж

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

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

API модуля Python sqlite3

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

Sr.No. API и описание
1

sqlite3.connect (база данных [, время ожидания, другие необязательные аргументы])

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

Когда доступ к базе данных осуществляется несколькими подключениями, и один из процессов изменяет базу данных, база данных SQLite блокируется, пока эта транзакция не будет зафиксирована. Параметр timeout указывает, как долго соединение должно ожидать, пока блокировка не исчезнет, ​​до возникновения исключения. Значение по умолчанию для параметра времени ожидания — 5,0 (пять секунд).

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

2

connection.cursor ([cursorClass])

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

3

cursor.execute (sql [, необязательные параметры])

Эта подпрограмма выполняет инструкцию SQL. Оператор SQL может быть параметризован (т. Е. Заполнители вместо литералов SQL). Модуль sqlite3 поддерживает два вида заполнителей: вопросительные знаки и именованные заполнители (именованный стиль).

Например — cursor.execute («вставить в людей значения (?,?)», (Кто, возраст))

4

connection.execute (sql [, необязательные параметры])

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

5

cursor.executemany (sql, seq_of_parameters)

Эта подпрограмма выполняет команду SQL для всех последовательностей параметров или отображений, найденных в последовательности sql.

6

connection.executemany (sql [, параметры])

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

7

cursor.executescript (sql_script)

Эта подпрограмма выполняет несколько операторов SQL одновременно, предоставленных в форме сценария. Сначала он выдает оператор COMMIT, а затем выполняет сценарий SQL, полученный в качестве параметра. Все операторы SQL должны быть разделены точкой с запятой (;).

8

connection.executescript (sql_script)

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

9

connection.total_changes ()

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

10

connection.commit ()

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

11

connection.rollback ()

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

12

connection.close ()

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

13

cursor.fetchone ()

Этот метод извлекает следующую строку из набора результатов запроса, возвращая одну последовательность или None, если больше нет данных.

14

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

Эта процедура извлекает следующий набор строк результата запроса, возвращая список. Пустой список возвращается, когда больше нет доступных строк. Метод пытается извлечь столько строк, сколько указано параметром size.

15

cursor.fetchall ()

Эта процедура извлекает все (оставшиеся) строки результата запроса, возвращая список. Пустой список возвращается, когда нет доступных строк.

sqlite3.connect (база данных [, время ожидания, другие необязательные аргументы])

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

Когда доступ к базе данных осуществляется несколькими подключениями, и один из процессов изменяет базу данных, база данных SQLite блокируется, пока эта транзакция не будет зафиксирована. Параметр timeout указывает, как долго соединение должно ожидать, пока блокировка не исчезнет, ​​до возникновения исключения. Значение по умолчанию для параметра времени ожидания — 5,0 (пять секунд).

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

connection.cursor ([cursorClass])

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

cursor.execute (sql [, необязательные параметры])

Эта подпрограмма выполняет инструкцию SQL. Оператор SQL может быть параметризован (т. Е. Заполнители вместо литералов SQL). Модуль sqlite3 поддерживает два вида заполнителей: вопросительные знаки и именованные заполнители (именованный стиль).

Например — cursor.execute («вставить в людей значения (?,?)», (Кто, возраст))

connection.execute (sql [, необязательные параметры])

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

cursor.executemany (sql, seq_of_parameters)

Эта подпрограмма выполняет команду SQL для всех последовательностей параметров или отображений, найденных в последовательности sql.

connection.executemany (sql [, параметры])

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

cursor.executescript (sql_script)

Эта подпрограмма выполняет несколько операторов SQL одновременно, предоставленных в форме сценария. Сначала он выдает оператор COMMIT, а затем выполняет сценарий SQL, полученный в качестве параметра. Все операторы SQL должны быть разделены точкой с запятой (;).

connection.executescript (sql_script)

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

connection.total_changes ()

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

connection.commit ()

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

connection.rollback ()

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

connection.close ()

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

cursor.fetchone ()

Этот метод извлекает следующую строку из набора результатов запроса, возвращая одну последовательность или None, если больше нет данных.

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

Эта процедура извлекает следующий набор строк результата запроса, возвращая список. Пустой список возвращается, когда больше нет доступных строк. Метод пытается извлечь столько строк, сколько указано параметром size.

cursor.fetchall ()

Эта процедура извлекает все (оставшиеся) строки результата запроса, возвращая список. Пустой список возвращается, когда нет доступных строк.

Подключиться к базе данных

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

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

print "Opened database successfully";

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

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

Создать таблицу

Следующая программа Python будет использоваться для создания таблицы в ранее созданной базе данных.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.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.close()

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

Opened database successfully
Table created successfully

ВСТАВИТЬ Операция

Следующая программа Python показывает, как создавать записи в таблице COMPANY, созданной в приведенном выше примере.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

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

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

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

conn.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 и отобразит следующие две строки:

Opened database successfully
Records created successfully

ВЫБЕРИТЕ Операцию

Следующая программа на Python показывает, как извлекать и отображать записи из таблицы COMPANY, созданной в приведенном выше примере.

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

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()

Когда вышеуказанная программа будет выполнена, она даст следующий результат.

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

ОБНОВЛЕНИЕ Операция

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

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit
print "Total number of rows updated :", 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()

Когда вышеуказанная программа будет выполнена, она даст следующий результат.

Opened database successfully
Total number of rows updated : 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
SALARY = 20000.0

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0

Operation done successfully

УДАЛЕНИЕ Операция

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

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print "Opened database successfully";

conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", 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()

Когда вышеуказанная программа будет выполнена, она даст следующий результат.