Skip to content
import sqlite3
import pandas as pd

1. Создайте файл базы данных c названием recipes.db. Создайте объект-курсор.

soz = sqlite3.connect('recipes.db') # создали бд 
oc = soz.cursor () #создали обьект курсор

# 2. Напишите и выполните SQL-запрос для создания таблицы рецептов Recipe. Таблица должна содержать следующие поля: id, name, minutes, submitted, description, n_ingredients. Определитесь с типами и составом ключевых полей.

sql = """
CREATE TABLE Recipe (
    id INTEGER PRIMARY KEY,
    name VARCHAR(200),
    minutes INTEGER,
    submitted NOT NULL,
    description TEXT,
    n_ingiridients INTEGER
);"""

3. Напишите и выполните SQL-запрос для создания таблицы отзывов Review. Таблица должна содержать следующие поля: id, user_id, recipe_id, date, rating, review. Определитесь с типами полей, набором ключевых полей. При помощи внешнего ключа соедините две таблицы.

sql1 = """
CREATE TABLE Review (
   id INTEGER PRIMARY KEY,
   user_id INTEGER, 
   recipe_id INTEGER, 
   date DATE,
   rating RATING,
   review TEXT,
   FOREIGN KEY (id), REFERENCES Recipe(Id)
);"""

4. Загрузите данные из файлов reviews_sample.csv (ЛР2) и recipes_sample_with_tags_ingredients.csv (ЛР5) в созданные таблицы


import csv, sqlite3

con = sqlite3.connect("recipes.db") # change to 'sqlite:///your_filename.db'
cur = con.cursor()


with open('reviews_sample.csv','r') as fin: # with statement available in 2.5+
    # csv.DictReader uses first line in file for column headings by default
    dr = csv.DictReader(fin) # comma is default delimiter
    to_db = [(i['user_id'], i['recipe_id'], i['date'], i['rating'], i['review']) for i in dr]

cur.executemany("INSERT INTO Review (user_id, recipe_id, date, rating, review) VALUES (?, ?, ?, ?, ?);", to_db)
con.commit()
con.close()
import csv, sqlite3

con = sqlite3.connect("recipes.db") # change to 'sqlite:///your_filename.db'
cur = con.cursor()

# Create the table
cur.execute("CREATE TABLE review (user_id INTEGER, recipe_id INTEGER, date TEXT, rating INTEGER, review TEXT);")

with open('reviews_sample.csv','r') as fin: # with statement available in 2.5+
    # csv.DictReader uses first line in file for column headings by default
    dr = csv.DictReader(fin) # comma is default delimiter
    to_db = [(i['user_id'], i['recipe_id'], i['date'], i['rating'], i['review']) for i in dr]

cur.executemany("INSERT INTO Review (user_id, recipe_id, date, rating, review) VALUES (?, ?, ?, ?, ?);", to_db)
con.commit()
con.close()

5. Найдите все рецепты, для выполнения которых нужно ровно 10 ингредиентов. Выведите на экран первые 5 из найденных рецептов.