Выборка данных из базы SQLite с помощью Python

Допустим, у нас есть готовая база данных, созданная с помощью СУБД SQLite3. Нам требуется написать на Python скрипт "клиентской" части. То есть в python-программе не будут создаваться таблицы, добавляться и обновляться записи. Нам просто требуется в зависимости от запросов пользователя выполнять различные SELECT'ы и выводить полученные данные.

Пусть наша база состоит из двух таблиц. Ниже показан вариант создания базы через SQLiteBrowser.

Структура первой таблицы

Данные первой таблицы

Структура второй таблицы

Данные второй таблицы

Требуется выполнить такие запросы:

  • Список заголовков с темой, написанной словами, уровнем и датой. Список должен быть отсортирован по убыванию даты.

  • Все записи (титулы и урлы) определенной темы, которую выбирает пользователь. Также посчитать количество записей.

import sqlite3
 
connection = sqlite3.connect("biology.sqlite3")
cursor = connection.cursor()
 
sql_themes = 'SELECT * FROM themes'
cursor.execute(sql_themes)
themes = {}
for i in cursor.fetchall():
    themes[i[0]] = i[1]
 
sql_questions = 'SELECT * FROM questions ORDER BY date(Date) DESC' # ASC
cursor.execute(sql_questions)
questions = cursor.fetchall()
for i in questions:
    print("{date} | {title} | {theme} | {lvl}"\
    .format(date=i[-1], title=i[1], theme=themes[i[3]], lvl=i[-2]))
 
print(themes)
theme = int(input('Введите номер темы: '))
theme = (theme,)
sql_theme = 'SELECT Title, Url FROM questions WHERE theme=?'
cursor.execute(sql_theme, theme)
theme_notes = cursor.fetchall()
print(theme_notes)
print(len(theme_notes))
 
connection.close()

Результат:

2017-12-15 | Соответствие между функциями и органами растения | Растения | 1
2017-12-15 | Какие факторы обеспечивают процветание грызунов? | Животные | 2
2017-11-15 | Функция камбия | Растения | 1
2017-10-15 | Споры бактерий | Бактерии | 1
2017-10-15 | Передвижение органических веществ в растениях | Растения | 1
2017-10-15 | Листья и испарение | Растения | 2
2017-10-15 | Ароморфозы млекопитающих | Животные | 2
2017-10-15 | Особенность размножения, появившаяся у пресмыкающихся | Животные | 1
{1: 'Вирусы', 2: 'Бактерии', 3: 'Грибы', 4: 'Растения', 5: 'Животные', 6: 'Человек'}
Введите номер темы: 5
[('Какие факторы обеспечивают процветание грызунов?', 'ege/rodent'), ('Ароморфозы млекопитающих', 'ege/mammal-aromorph
oses'), ('Особенность размножения, появившаяся у пресмыкающихся', 'ege/reptile-reproduction')]
3

Документация модуля sqlite3 на python.org.

Создано

Обновлено