Гостевая статья [SQL] - Доступ к базе данных SQLite из Python

копия чужой авторской работы

Начало

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

sqlite_python_logo.png

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

Получить номер спецификации, поддерживаемой модулем, можно с помощью атрибута apilevel:

Python:
>>> import sqlite3 # Подключаем модуль;
>>> sqlite3.apilevel # Получаем номер спецификации;
'2.0'

Получить номер версии используемого модуля sqlite3 можно с помощью атрибутов sqlite_version и sqlite_version_info. Атрибут sqlite_version возвращает номер версии в виде строки, а атрибут sqlite_version_info - в видте кортежа из трех четырех чисел.

Пример:
Python:
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.31.1'
>>> sqlite3.sqlite_version_info
(3, 31, 1)
>>>

Согласно спецификации DB-API 2.0, последовательность работы с базой данных выглядит следующим образом:

1. Производится подключение к базе данных с помощью функции connect(). Функция возвращает объект соединения, с помощью которого осуществляются дальнейшая работа с базой даннных.
2. Создается объект-курсор.
3. Выполняется SQL-Запросы и обрабатываются результаты. Перед выполнением первого запроса, который изменяет записи(INSERT, REPLACE, UPDATE И DELETE), автоматически запускается транзакция.
4. Завершается транзакция или отменяются все изменение в рамках транзакции.
5. Закрывается объект-курсор.
6. Закрывается соединение с базой данных.


Создание и открытие базой данных


Для создания и открытия базы данных служит функция, как я говорил ранее - connect(). Функция имеет следующий формат:
connect(database)

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

Функция connect() возвращает объект соединения, с помощью которого осуществляются вся дальнейшая работа с базой данных. Если открыть базу данных не удалось, то возбуждается исключение. Соединение закрывается, когда вызывается метод close() объекта соединения.

Выполнение запросов

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

close() - закрывает объект-курсора;
executescript(SQL-запросы через точку с запятой) - выполняет несколько SQL запросов за один раз. Если в процессе выполнение запросов, возникает ошибка, метод возбуждает исключение. Давайте создадим таблицу user, с столбцами nickname, email и password.

Ну перед этим, я бы вам по рекомендовал такую программу как - DB Browser for SQLite3.

7454271.png
Браузер БД для SQLite (DB4S) - это высококачественный визуальный инструмент с открытым исходным кодом для создания, проектирования и редактирования файлов базы данных, совместимых с SQLite. DB4S предназначен для пользователей и разработчиков, которые хотят создавать, искать и редактировать базы данных. DB4S использует знакомый интерфейс, похожий на электронную таблицу, и сложные команды SQL не нужно изучать. Элементы управления и мастера доступны для пользователей для: создания и сжатия файлов базы данных; создания, определения, изменения и удаления таблиц; создания, определения и удаления индексов; просмотра, редактирования, добавления и удаления записей; поиска записей; импорта и экспорта записей в виде текста; импорта и экспорта таблиц.

[ВЕСЬ ТЕКСТ, БЫЛ СКОПИРОВАН С ЭТОГО ИСТОЧНИКА - ]

.


Создаем таблицу

Итак, давайте создадим простую таблицу user, со столбцами nickname, email и password:

Python:
import sqlite3 # Импортируем библиотеку;

con = sqlite3.connect('test.db') # Создаем базу данных[Если он не существует];
cur = con.cursor() # Создаем объект-курсор.

# Переменная sql, будет иметь sqlite команды
sql = """\
CREATE TABLE user( -- Создаем таблицу
    -- Внутри него будут простые столбцы
    id_user INTEGER PRIMARY KEY AUTOINCREMENT, -- столбец nickname в простой текстовый режим[TEXT]
    email TEXT, -- столбец email в простой текстовый режим[TEXT]
    password TEXT; -- столбец password в простой текстовый режим[TEXT]
)

"""

# Так же, вызываем простое условие, если всё "Чики-пуки", то вызывается команда print() с положительной сообшенией.

if cur.executescript(sql):
    print('Запрос успешно выполнен!')

cur.close() # Закрываем объект курсор
con.close() # Закрываем соеденение с базой

Код получился не так и уж большим, давайте посмотрим что случилось. Ну вас возникает вопрос - Где таблица? Если посмотреть на ваш проект(Ваши файлы питоны), то у вас появился файл test.db, чтобы открыть его, для этого жмякаем 2 клика на файл, и оп, открывается DB Browser for SQLite, если он у вас не стоит, то нажмите правый клик на файл -> Открыть с помощью -> DB Browser for SQLite.

Запускаем код и видим результат.

Снимок экрана от 2021-07-19 23-26-09.png


Отлично, теперь нажимаем на файл test.db и видим:
Снимок экрана от 2021-07-19 23-26-26.png


Как видите на экране, у нас создалась таблица user и 3 столбца.

Итоги

Тоесть, мы узнали как работает код, как создавать таблицу, как подключать и т.д. Но все же, я бы вам рекомендовал учить SQL, хотя бы на половину( ) Надеюсь данная статься была полезна для вас.

[БУДУ РАД, ЕСЛИ НАЙДЕТЕ ОШИБКИ В КОДЕ ИЛИ В ТЕКСТЕ!]
 

Muxtar

Green Team
02.06.2021
132
65
BIT
0
Ах да, если вы не знали, в SQL есть еще и комментарии:

-- Однострочная комментария
/* Многострочные комментарии */
 

Muxtar

Green Team
02.06.2021
132
65
BIT
0
Несмотря на то, что статья - чистейший копипаст, ошибок достаточно много. Нет ссылки на .
Да, я брал чужих авторов. Извиняюсь за такое, но я не знал что существует и гостевая статья... Теперь буду знать. Еще раз извиняюсь.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!