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 из найденных рецептов.