SQLite3 Python

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

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

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

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

Python:
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:
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:
new = [('20', 'plus', '7'), ('60', 'minus', '42')] #наша переменная

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

conn.commit() #опять сохраняем изменения
Попробуем заменить некоторые данные из таблицы. Например все plus на minus
Код:

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

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

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

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

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

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

Ну и попробуем использовать таблицы на практике.
У меня есть вот такой обучаемый чат бот:
Python:
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() #отключаемся от базы
С помощью такого простого кода можно сделать чат бота для вк и тому подобных мессенджеров.
Всем удачи!
 
Сверху Снизу