Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.12.2020
Сообщений: 2
1

help, python, sqlite3, database, база данных, выборка

27.12.2020, 07:17. Показов 2761. Ответов 2

Author24 — интернет-сервис помощи студентам
Всем привет, я в питоне новичок, да и программированием не занимаюсь. Но задали нам домашку. Экспертную систему сочинить, соответственно с нашими умениями все скатилось к связке бд с одним из языков программирования.

Ближе к сути.
Что я пытаюсь сделать:
написать программу которая делает шаги(напишу поэтапно, а то из меня тот объясняльщик)
1. обращается к бд films.db
2. открывает таблицу genres
3. и выводит на экран вопрос с содержанием строк, начиная с первой строки, столбец-title
4. варианты ответа: да, нет и не знаю, где не знаю=нет
4.1 если человек не выбирает ни одного жанра, то на экран выводится "для тебя ничего нет, попробуй посмотреть 'и вывод рандомного фильма'" из таблицы Films столбца title
4.2 если человек выбирает да, то этому ответу присваивается соответствующее id.
5. мы открываем таблицу Films, смотрим столбец genre(там мы до этого напротив каждого фильма поставили соответствующий идентификатор), отбрасываем все ответы, которые не принимают нашего значения
6. смотрим в этой же таблице (Films) с примененным параметром стобца genre, столбец duration, так же (как пункт 3)по очереди выводит на экран вопрос с содержанием строк, начиная с первой строки, столбец-title
7.варианты ответа: да, нет и не знаю, где не знаю=нет
8. если человек не выбирает ни одной длительности, то на экран выводится "для тебя ничего нет, попробуй посмотреть 'и вывод рандомного фильма'" из таблицы Films столбца title
9. если человек выбирает да, то на экран выводится "Поздравляю, сегодня ты будешь смотреть "название фильма (столбец title, параметры заданные во время работы с интерфейсом, как правило у меня там не больше 2 фильмов)""

на данный момент у меня получилось обращаться к БД и задавать параметры, но мне нужно диалоговое окно или интерфейс через которое я или пользователь будут задавать параметры выборки
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2020, 07:17
Ответы с готовыми решениями:

Sqlite3. База данных
Спроектировал базу данных. Сформировал ее в sqlite3 Помогите разобраться почему не работают...

PyQt5 и база данных (SQLite3): скорость работы
Доброго времени суток. Python изучаю недавно совсем, поэтому много вопросов). Суть этого такова:...

База данных в sqlite3, как сделать категорию?
по типу * var id a1 в переменной var под айди id в категории a1 что то изменить. Я пытался вот...

Не получается считать данные с база данных db (библиотека SQLite3)
Cделал программу по исходникам из курсовой работы, формы запускают, но почему-то не все формы...

Как можно подключить с парольной sqlite3 база данных в C++ Builder
Как можно подключить с парольной sqlite3 база данных в C++ Builder Добавлено через 8 минут...

2
0 / 0 / 0
Регистрация: 26.12.2020
Сообщений: 2
27.12.2020, 22:20  [ТС] 2
итак:
наверное напишу упрощенный вариант того что пытаюсь воплотить:

берем из таблицы все жанры

Ну столбец

Делаем так чтобы значения не повторялись(в модуле collections есть такая функция)

Составляем список

По этому списку итерируемся и спрашиваем пользователя

Если на какой то из жанров он ответил да, в переменную genre запихиваем какой жанр он выбрал

Идём так же к длительности

Все то же самое что с жанрами проделываем

В итоге он выберет какую то длительность

И потом, делаем один запрос к бд типо: select name from films where genre=<жанр который выбрал пользователь> and duration=<длительность, которую выбрал пользователь>

И результат выводим юзеру

у меня получилось найти как выводить результат если пользователь не смог подобрать для себя результат

Python
1
2
3
4
5
6
with sqlite3.connect('last.db') as db:
    cursor = db.cursor()
    query = f"SELECT * FROM films ORDER BY RANDOM() LIMIT 1 "
    cursor.execute(query)
    for i in cursor:
        print(i)
теперь я пытаюсь применить модуль collection чтобы жанры фильмов не повторялись

(если кому-то интересно следить за ходом этой работы)

для тупней типа меня last.db - название моей базы данный, films -название моей таблицы, а там где звездочка указывается значение столбца который нужно вывести, а если * то выводится строчка целиком

Добавлено через 3 часа 46 минут
для тех кого интересует что получилось в конечном итоге:
конечно не совсем то, что я изначально хотела, но отвечает всем необходимым параметрам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import sqlite3
import collections
 
con = sqlite3.connect('last.db')
cnt = collections.Counter()
def get_result(con, genre, duration):
    cur = con.cursor()
    cur.execute("""SELECT * from films""")
    rows = cur.fetchall()
    genre = get_genre(rows)
    duration = get_duration(rows)
    return [
        i[1] for i in list(rows) if i[2] == genre and i[3] == duration
    ][0]
 
def get_genre(sql_result):
    genre_set = set([i[2] for i in list(sql_result)])
    for i in genre_set:
        if input("Какой жанр хотели бы посмотреть сегодня: %s ?" % i) == "yes":
            return i
    #         поменять на случайный
    return genre_set.pop()
 
def get_duration(sql_result):
    duration_set = set([i[3] for i in list(sql_result)])
    for i in duration_set:
        if input("Какой длины вас интересует фильм: %s ?" % i) == "yes":
            return i
    return duration_set.pop()
0
0 / 0 / 0
Регистрация: 08.06.2019
Сообщений: 3
22.02.2021, 12:23 3
Не поскажете как у вас выглядит сама база данных?
0
22.02.2021, 12:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2021, 12:23
Помогаю со студенческими работами здесь

База данных Database Desktop
Выручите плизз Кто нибуть может сделать бд через Database Desktop с 1 таблицей, чтоб в ней была...

Python SQLite3 Ввод пользователем в базу данных
Укажите пожалуйста на ошибки. Я хочу сделать что бы введенные пользователем данные отображались в...

Как вставить словарь в базу данных sqlite3 telebot python?
Всем привет! Начал писать telegram бота (библиотека telebot), который должен сохранять заказы в...

Как использовать переменные из функции для передачи их в базу данных Sqlite3 в связке с python eel?
@eel.expose def tag_select_inc_py(tag_inc_js): # get Inc tag from js...

Sqlite3 unable to open database file
Добрый день. Пытаюсь создать сервис по этому уроку. При выполнении операции rake -T (середина...

База данных Access выборка и поиск
Здравствуйте уважаемые форумчане! Пишу программу в Delphi, база данных Access, на главней форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru