База данных - это невероятно удобная вещь, когда нужно безопастно хранить данные в долгострочной памяти. Разумеется, что есть вариант с написание кода, который будет парсить данные напрямую из какого-нибудь текстового файлика и иметь возмость зашифровать данные пользователей, но это очень неустойчивая структура, хотя бы потому что остается возможность потерять данные при ошибке программы. SQLite - это одна из самых простых баз данных, которую можно расположить локально у себя на устройтве и не боятся, что ваши данные перехватят или сервер будет взломан.
SQL является довольно понятным языком запросов, т.к все команды исполняются на понятном человеку языком. К примеру:
SELECT * FROM table WHERE id=0;
Буквально можно перевести этот запрос как: Выбрать все значения из таблицы table, где id равен 0.
На мой взягляд ничего сложного.
Можно выделить несколько основных команд языка SQL:
Команда | Действие |
---|---|
CREATE TABLE | Создать таблицу |
DROP TABLE | Удалить таблицу |
SELECT | Выбрать что-то откуда-то |
INSERT | Добавить что-то куда-то |
UPDATE | Обновить что-то где-то |
DELET | Удалить что-то откуда-то |
INSERT | Добавить что-то куда-то |
WHERE | фильтр “ГДЕ”. Применяется к SELECT, UPDATE, DELETE |
WHERE | фильтр “ГДЕ”. Применяется к SELECT, UPDATE, DELETE |
Для начала работы с базой данных SQLite необходимо дял начала импортировать специальную библиотеку sqlite3
.
# импорт бибилиотеки
import sqlite3 as sql
В процессе разработки возникают проблемы, после их решения не плохо было бы сохранить какие-то части кода и комментарии для них.
Вот пример нескольких из них:
Функция создания локальной БД и таблицы в ней, если такая отсутствует, в противном случае подключиться к ней:
def create_database(name_db:str) -> None:
db = sql.connect(name_db)
# создаем курсор
cursor = db.cursor()
# создание таблицы
cursor.execute("""CREATE TABLE IF NOT EXISTS name_table(
id INTEGER,
name TEXT,
age INTEGER,
login TEXT,
password TEXT
)
""")
# сохранить
db.commit()
Функция для изъятия данных из таблицы по какому-то ключу. Вернет кортеж данных. Для выполнения запроса используется все тот же SQL.
# вернет кортеж с данными из базы данных
def get_data_from_database(name_db:str, data) -> tuple:
db = sql.connect(name_db)
cursor = db.cursor()
cursor.execute(
f"""SELECT * FROM {name_db} WHERE id={data}"""
)
# вернуть одно вхождение
return cursor.fetchone()
Функция добавления каких-либо данных в БД:
# Важно помнить о типе данных, которые устанавливали при создании БД
def add_data_in_database(name_db:str, data, add_data) -> None:
db = sql.connect(name_db)
cursor = db.cursor()
cursor.execute(
f"""INSERT INTO {name_db} VALUES (id={data}, name='{add_data}')"""
)
# сохраняем
db.commit()
Функция изменения данных в БД:
def update_data(name_db:str, data, new_data):
db = sql.connect(name_db)
cursor = db.cursor()
cursor.execute(
f"""UPDATE {name_db} SET name='{new_data}' WHERE id={data}"""
)
# сохранить
db.commit()
Функция удаления каких-либо данных из БД:
# удалить какие-то данных по параметру
def deleteData(login:str) -> None:
db = sqlite3.connect("users.db")
cursor = db.cursor()
cursor.execute(f"""
DELETE FROM users WHERE login='{login}'
""")
db.commit()
db.close()
Получение определенной строки из таблицы БД:
# получить строку в формате массива по параметру из таблицы БД
def getAllData() -> list:
db = sqlite3.connect("users.db")
cursor = db.cursor()
data = cursor.execute(f"""
SELECT login FROM users
""")
return [i[0] for i in data.fetchall()]