SQLite3 Python

substandard rank
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
21 Янв 2019
Сообщения
429
Реакции
113
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ку всем, сегодня опишу работу библиотеки sqlite3 для python.

Во-первых sql - это язык структурированных запросов. Нужен для управления данными (создания/редактирования/удаления/использования)

Чтобы подключить данную библиотеку - import sqlite3

Начнем с создания таблицы с полями для данных:

Python:
Expand Collapse Copy
import sqlite3

connect = sqlite3.connect("base.db") #подключаемся к нашей базе (если ее нет, она появится сама)
cursor = conn.cursor() #переменная для работы с данными

#создадим табличку
try: #try нам нужен во избежание ошибок при повторном создании (если такая бд уже есть будет ошибка)
    cursor.execute("""CREATE TABLE math
    (number text, type text, number2 text)
    """) #создали таблицу math с текстовыми переменными number, type, number2
except:
    pass #иначе пропускаем

После для заполнения нам понадобится все тот же execute, но с другими командами внутри
Код:

Python:
Expand Collapse Copy
cursor.execute("""INSERT INTO math
VALUES ('20', 'plus', '7')
""") #вписываем значения в таблицу math (number=20, type=plus, number2=7)

#Обязательно сохраняем наши значения и таблицу

connect.commit()

Поработаем с огромным количество данных в переменной. То есть у нас есть переменная с нашими данными [('20', 'plus', '7'), ('30', 'minus', '3')] и так далее.
Код:
Python:
Expand Collapse Copy
new = [('20', 'plus', '7'), ('60', 'minus', '42')] #наша переменная

#с помощью executemany заталкиваем много значений в таблицу.
cursor.executemany("INSERT INTO math VALUES (?, ?, ?)", new) #вопросики в нашем случае некая защита

conn.commit() #опять сохраняем изменения

Попробуем заменить некоторые данные из таблицы. Например все plus на minus
Код:

Python:
Expand Collapse Copy
#так же можно работать с переменными для произведения команд.
replace = """UPDATE math SET type = 'minus' WHERE type = 'plus'""" #создаем переменную replace
#в ней обновляем табличку, устанавливаем данные для замены с помощью SET, а после меняем на эти данные где тип = плюс (WHERE type = 'plus')

cursor.execute(replace) #выводим в таблицу нашу переменную с заменой данных
connect.commit() #сохраняем

Так же можно удалять данные из таблицы
Код:

Python:
Expand Collapse Copy
cursor.execute("DELETE FROM math WHERE number = '60'")
#с помощью команды DELETE удаляем из таблицы math (FROM math) данные с числом 60 (WHERE number = '60')
connect.commit() #сохраняем

Запомните что * в sqlite3 обозначает выбор всех данных с условием (например что тип у нас минус).

Чтобы получить результат последнего изменения можно написать: print(cursor.fetchall())

Ну и последнее. Использование LIKE
Код:

Код:
Expand Collapse Copy
LIKE = "SELECT * FROM math WHERE type LIKE 'pl%'" #LIKE означает похоже на что-то, в нашем случае на pl
#заметьте я использовал % после pl, это символ "продолжения", мы указываем что после pl что-то есть
cursor.execute(LIKE) #сохраняем

Ну и по завершению работы с таблицей пишем connect.close()

Ну и попробуем использовать таблицы на практике.
У меня есть вот такой обучаемый чат бот:
Python:
Expand Collapse Copy
import sqlite3

conn = sqlite3.connect('tst.db')
cur = conn.cursor()
cur.execute('create table if not exists tbl(ask text,answ text)') #создаем базу вопрос/ответ

while True:
    asked = input('Вопрос: ')  #просим ввод вопроса например "Привет"
    if not asked: #если пусто, остановка
        break
    cur.execute('select answ from tbl where ask==?',(asked,))
    answer = [i[0] for i in cur.fetchall()] #перечисляем все ответы
    if not answer:
        answers = input("Ответ: ")
        if not answers: continue #если пусто, продолжаем задавать вопросы
        cur.execute('insert into tbl values(?,?)',(asked,answers)) #добавляем вопрос и ответ к нему
    else: #иначе выводим ответ
        print('Ответ бота: {0}'.format(*answer))
conn.close() #отключаемся от базы

С помощью такого простого кода можно сделать чат бота для вк и тому подобных мессенджеров.
Всем удачи!
 
Назад
Сверху Снизу