Работа с базами данных во фреймворке Flask. Практика

Высокая скорость работы, так как база данных хранится в одном файле и не требует сетевого взаимодействия или использования процессов-серверов.

Поддержка всех основных операций SQL, таких как SELECT, INSERT, UPDATE и DELETE, а также транзакций и подготовленных запросов.

Поддержка большинства типов данных, включая целые числа, числа с плавающей точкой, строки, даты и времена, NULL и BLOB (binary large objects).

Содержимое разработки

Практика. Базы данных. SQL. Преподаватель: Фартышев Дмитрий Александрович

Практика. Базы данных. SQL.

Преподаватель: Фартышев Дмитрий Александрович

Задача 1 “ Создание новой базы данных и подключение к существующей ” Необходимо подключить к библиотеке sqlite3 и создать базу данных . import sqlite3 # Создаем подключение к базе данных (файл my_database.db будет создан) connection = sqlite3.connect( 'my_database.db' ) connection.close()

Задача 1 “ Создание новой базы данных и подключение к существующей

Необходимо подключить к библиотеке sqlite3 и создать базу данных .

import sqlite3

# Создаем подключение к базе данных (файл my_database.db будет создан)

connection = sqlite3.connect( 'my_database.db' )

connection.close()

Задача 2 “ Новая таблица ” Создать в БД таблицу, в которой будем хранить информацию о пользователях id, username. email и age: import sqlite3 # Устанавливаем соединение с базой данных connection = sqlite3.connect( 'my_database.db' ) cursor = connection.cursor() # Создаем таблицу Users cursor.execute( ''' CREATE TABLE IF NOT EXISTS Users ( id INTEGER PRIMARY KEY, username TEXT NOT NULL, email TEXT NOT NULL, age INTEGER ) ''' ) # Сохраняем изменения и закрываем соединение connection.commit() connection.close()

Задача 2 “ Новая таблица

Создать в БД таблицу, в которой будем хранить информацию о пользователях id, username. email и age:

import sqlite3

# Устанавливаем соединение с базой данных

connection = sqlite3.connect( 'my_database.db' )

cursor = connection.cursor()

# Создаем таблицу Users

cursor.execute( '''

CREATE TABLE IF NOT EXISTS Users (

id INTEGER PRIMARY KEY,

username TEXT NOT NULL,

email TEXT NOT NULL,

age INTEGER

)

''' )

# Сохраняем изменения и закрываем соединение

connection.commit()

connection.close()

Задача 3 “ Первая запись ” Внести в нашу созданную таблицу первую запись: import sqlite3 # Устанавливаем соединение с базой данных connection = sqlite3.connect( 'my_database.db' ) cursor = connection.cursor() # Добавляем нового пользователя cursor.execute( 'INSERT INTO Users (username, email, age) VALUES (?, ?, ?)' , ( 'newuser' , 'newuser@example.com' , 28 )) # Сохраняем изменения и закрываем соединение connection.commit() connection.close()

Задача 3 “ Первая запись

Внести в нашу созданную таблицу первую запись:

import sqlite3

# Устанавливаем соединение с базой данных

connection = sqlite3.connect( 'my_database.db' )

cursor = connection.cursor()

# Добавляем нового пользователя

cursor.execute( 'INSERT INTO Users (username, email, age) VALUES (?, ?, ?)' , ( 'newuser' , '[email protected]' , 28 ))

# Сохраняем изменения и закрываем соединение

connection.commit()

connection.close()

Задача 4 “ Фильмы

Создать БД, создать таблицу с полями название, рейтинг, год, режиссёр, жанр:

import sqlite3

# создание подключения к базе данных

conn = sqlite3.connect('mydb.db')

# создание таблицы movies

conn.execute('''CREATE TABLE movies

(название TEXT,

рейтинг REAL,

год INTEGER,

режиссер TEXT,

жанр TEXT);''')

# подключение к базе данных

conn = sqlite3.connect('mydb.db')

# данные о фильмах

movies_data = [

('Побег из Шоушенка', 9.3, 1994, 'Фрэнк Дарабонт', 'драма'),

('Крестный отец', 9.2, 1972, 'Фрэнсис Форд Коппола', 'драма'),

('Крестный отец 2', 9.0, 1974, 'Фрэнсис Форд Коппола', 'драма'),

('Тёмный рыцарь', 9.0, 2008, 'Кристофер Нолан', 'боевик'),

('12 разгневанных мужчин', 9, 1957, 'Сидни Люмет', 'драма'),

('Список Шиндлера', 9, 1993, 'Стивен Спилберг', 'драма'),

('Властелин колец: Возвращение короля ', 9, 2003, 'Питер Джексон', 'фэнтези'),

('Криминальное чтиво', 8.9, 1994, 'Квентин Тарантино', 'криминал'),

('Хороший, плохой, злой', 8.8, 1966, 'Серджио Леоне', 'вестерн'),

('Бойцовский клуб', 8.8, 1999, 'Дэвид Финчер', 'драма'),

]

# добавление данных в таблицу movies

for movie in movies_data:

conn.execute(f"INSERT INTO movies VALUES ('{movie[0]}', {movie[1]}, {movie[2]}, '{movie[3]}', '{movie[4]}')")

# сохранение изменений и закрытие базы данных

conn.commit()

# закрытие подключения к базе данных

conn.close()

Задача 5 “Лекарства”

Напишите две программы:

  • Первая создает базу данных pharmacy , в которой хранятся данные о лекарственных препаратах.
  • Вторая выполняет поиск по БД и выводит все лекарственные формы запрошенного препарата.

import sqlite3

import sqlite3

# Подключение к базе данных

# Подключение к базе данных

conn = sqlite3.connect('pharmacy.db')

conn = sqlite3.connect('pharmacy.db')

cursor = conn.cursor()

cursor = conn.cursor()

# Создание таблицы medicines

# Запрос на поиск лекарства по названию

medicine_name = input('Введите название препарата: ')

cursor.execute('''CREATE TABLE medicines

cursor.execute('''SELECT * FROM medicines

(name text, manufacturer text, form text, price real)''')

WHERE name=?''', (medicine_name,))

# Заполнение таблицы данными о лекарствах

medicines = [('амоксициллин', 'BPharma', 'капсулы', 265),

# Вывод всех имеющихся записей с найденным лекарством

('амоксициллин', 'Healthy', 'сироп', 250),

rows = cursor.fetchall()

if len(rows) == 0:

('амоксициллин', 'Pharmstandart', 'таблетки', 150),

('амоксициллин', 'Teva', 'ампулы', 350),

print(f'Препарат {medicine_name} не найден')

else:

('аспирин', 'Bayer', 'таблетки', 100),

('аспирин', 'Stada', 'капсулы', 120),

print(f'Найдены записи о препарате {medicine_name}:')

for row in rows:

('аспирин', 'Teva', 'сироп', 190),

('валидол', 'Pharmstandart', 'таблетки', 50),

print(row)

('валидол', 'Stada', 'капсулы', 60),

('валидол', 'Healthy', 'сироп', 70),

# Закрытие базы данных

('валериана', 'BPharma', 'капсулы', 80),

conn.close()

('валериана', 'Pharmstandart', 'таблетки', 90),

('валериана', 'Healthy', 'сироп', 100),

('глицин', 'Pharmstandart', 'таблетки', 40),

('глицин', 'BPharma', 'капли', 30),

('диазолин', 'Healthy', 'таблетки', 120),

('диазолин', 'Pharmstandart', 'капсулы', 130),

('диазолин', 'Stada', 'сироп', 140),

('димедрол', 'BPharma', 'таблетки', 50),

('димедрол', 'Healthy', 'капсулы', 60),

('димедрол', 'Pharmstandart', 'сироп', 70),

('димедрол', 'Teva', 'ампулы', 170),

('ибупрофен', 'Bayer', 'таблетки', 80),

('ибупрофен', 'Healthy', 'капсулы', 90),

('ибупрофен', 'Pharmstandart', 'сироп', 100),

('кетонал', 'Teva', 'таблетки', 200),

('кетонал', 'Stada', 'капсулы', 210),

('кетонал', 'BPharma', 'сироп', 220),

('мезим', 'Pharmstandart', 'таблетки', 150),

('мезим', 'Healthy', 'капсулы', 160),

('мезим', 'BPharma', 'сироп', 170),

('нурофен', 'Bayer', 'таблетки', 120),

('нурофен', 'Healthy', 'капсулы', 130),

('нурофен', 'Pharmstandart', 'сироп', 140)]

cursor.executemany('INSERT INTO medicines VALUES (?,?,?,?)', medicines)

# Сохранение изменений и закрытие базы данных

conn.commit()

conn.close()

Задача 6 “Flask и sqlite3” index.html Файл index.html будет содержать две кнопки, одна кнопка для проверки всех списков участников (взято из базы данных). И другая кнопка для создания новой записи. join.html В файле join.html создайте простую форму, которая принимает имя, адрес электронной почты, город, страну и телефон в качестве входных данных для сохранения в базе данных. Методом POST получите запрос формы всех столбцов и зафиксируйте изменения в базе данных после вставки данных в таблицу. participants.html Используйте тег таблицы и назначьте заголовок с помощью тега . Для автоматического увеличения строки таблицы в новой записи используйте шаблон jinja цикла For. Внутри цикла For добавьте теги  и .

Задача 6 “Flask и sqlite3”

  • index.html

Файл index.html будет содержать две кнопки, одна кнопка для проверки всех списков участников (взято из базы данных). И другая кнопка для создания новой записи.

  • join.html

В файле join.html создайте простую форму, которая принимает имя, адрес электронной почты, город, страну и телефон в качестве входных данных для сохранения в базе данных. Методом POST получите запрос формы всех столбцов и зафиксируйте изменения в базе данных после вставки данных в таблицу.

  • participants.html

Используйте тег таблицы и назначьте заголовок с помощью тега . Для автоматического увеличения строки таблицы в новой записи используйте шаблон jinja цикла For. Внутри цикла For добавьте теги и .

from flask import Flask, render_template, request import sqlite3 app = Flask(__name__) @app.route('/') @app.route('/home') def index():  return render_template('index.html') connect = sqlite3.connect('database.db') connect.execute( 'CREATE TABLE IF NOT EXISTS PARTICIPANTS (name TEXT, \  email TEXT, city TEXT, country TEXT, phone TEXT)') @app.route('/join', methods=['GET', 'POST']) def join():  if request.method == 'POST':  name = request.form['name']  email = request.form['email']  city = request.form['city']  country = request.form['country']  phone = request.form['phone']  with sqlite3.connect(

from flask import Flask, render_template, request

import sqlite3

app = Flask(__name__)

@app.route('/')

@app.route('/home')

def index():

return render_template('index.html')

connect = sqlite3.connect('database.db')

connect.execute( 'CREATE TABLE IF NOT EXISTS PARTICIPANTS (name TEXT, \

email TEXT, city TEXT, country TEXT, phone TEXT)')

@app.route('/join', methods=['GET', 'POST'])

def join():

if request.method == 'POST':

name = request.form['name']

email = request.form['email']

city = request.form['city']

country = request.form['country']

phone = request.form['phone']

with sqlite3.connect("database.db") as users:

cursor = users.cursor()

cursor.execute("INSERT INTO PARTICIPANTS \

(name,email,city,country,phone) VALUES (?,?,?,?,?)",

(name, email, city, country, phone))

users.commit()

return render_template("index.html")

else:

return render_template('join.html')

@app.route('/participants')

def participants():

connect = sqlite3.connect('database.db')

cursor = connect.cursor()

cursor.execute('SELECT * FROM PARTICIPANTS')

data = cursor.fetchall()

return render_template("participants.html", data=data)

if __name__ == '__main__':

app.run(debug=True)

Flask and SQLite

table, th, td {

border:1px solid black;

}

{%for participant in data%}

{%endfor%}

Name Email City Country Phone Number
{{participant[0]}} {{participant[1]}} {{participant[2]}} {{participant[3]}} {{participant[4]}}

Задача 6 “Flask и sqlite3”

Flask and SQLite

Build Web App Using Flask and SQLite

Fill form to get updates

Check participant list

Flask and SQLite

Enter Name:


Enter Email:


Enter City:


Enter Country:


Enter phone num:



Практика Создайте страницу сайта с формой, в которую можно будет вводить данные пользователя (имя, электронная почта и т.д.). После отправки формы данные должны сохраняться в базе данных .

Практика

Создайте страницу сайта с формой, в которую можно будет вводить данные пользователя (имя, электронная почта и т.д.). После отправки формы данные должны сохраняться в базе данных .

Практика Необходимо установить расширение Flask-WTF, которое позволяет работать с формами в Flask и WTForms, библиотекой для создания форм в Python. Необходимо создать базу данных, например, с помощью SQLite. Создать файл app.py и подключить необходимые библиотеки.

Практика

Необходимо установить расширение Flask-WTF, которое позволяет работать с формами в Flask и WTForms, библиотекой для создания форм в Python.

Необходимо создать базу данных, например, с помощью SQLite.

Создать файл app.py и подключить необходимые библиотеки.

Сохранить у себя:
Работа с базами данных во фреймворке Flask. Практика

Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки