Создать модель данных в Flask

{title}

Наши приложения - это гораздо больше, чем простые страницы, поэтому мы должны создать способы хранения данных в какой-либо персистентной системе, именно здесь Базы данных вступают в игру, где для того, чтобы установить способ, которым База данных дает нам Это поможет, что модели должны быть созданы.
Модель дает нам структуру, в соответствии с которой будет работать самая большая логика нашего приложения, именно здесь мы придаем значение различным сущностям, с которыми мы должны считаться, чтобы выполнять свои действия.
Flask имеет возможность использовать разные типы СУБД только с использованием SQLAlchemy ORM .
требования

Нам нужна функциональная установка Flask и соответствующие разрешения, чтобы иметь возможность устанавливать больше компонентов через pip . Если у нас есть возможность работать с Virtualenv, это гораздо более целесообразно, но в этом нет необходимости. Если мы хотим экстраполировать примеры учебника, нам понадобится некоторый движок базы данных, такой как MySQL, на случай, если мы хотим перенести функциональность в гораздо более реальную среду, поскольку в упражнениях мы будем работать с sqlite в качестве меры упрощения и будем более практичными.

Установить SQLAlchemy


Первое, что мы сделаем, это установим SQLAlchemy, этот шаг очень прост, нам нужно всего лишь выполнить следующую команду в консоли, включенной для запуска pip :
 pip установить колбу-sqlalchemy 
В конце мы получим сообщение об успехе, если все прошло правильно:

{title}

Создать приложение для использования SQLAlchemy


Теперь мы собираемся запустить SQLAlchemy, для этого мы создадим небольшое приложение, в котором мы увидим, как мы можем установить соединение с ядром базы данных. В этом случае наше приложение будет называться flasko, и в нем мы должны иметь следующую структуру.
1 - файл с именем run.py, который будет находиться в корне приложения. Этот файл выполняет базовую инициализацию всей нашей среды.
2 - папка с именем flasko, внутри которой находится файл с именем __init__.py, в котором мы будем инициализировать использование flask и SQLAlchemy напрямую.
Давайте посмотрим на следующем рисунке, как эта структура выглядит в проекте:

{title}


Как только мы узнаем, что мы должны иметь, у нас будет содержимое для наших исходных файлов. В файле run.py у нас должно быть следующее:
 из Flashko импортировать appapp.run (debug = True) 
Затем в нашем файле __init__.py мы разместим этот код:
 из колбы импортировать Flask из flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (app) 
Этот последний код очень просто объяснить, мы просто импортируем Flask, затем импортируем SQLAlchemy, устанавливаем наше приложение для работы с фреймворком, а затем устанавливаем соединение с нашей базой данных в этом случае sqlite, где оно будет называться flaskdb.db и Он будет в том же каталоге нашего приложения. Наконец, мы назначаем объект SQLAlchemy переменной db, с которой мы будем работать позже.
Если мы сейчас запустим наше приложение, оно должно запуститься без ошибок, единственное, что у нас не будет результата, потому что приложение все еще пустое.

Создать модель


Поскольку у нас есть базовая конфигурация нашего приложения, теперь мы должны заложить основы для создания нашей модели, для этого нам нужно будет создать в нашей папке папку, содержащую файл __init__.py, и именно там мы будем генерировать необходимый контент.
Давайте посмотрим, как изменяется структура нашей папки:

{title}


Как мы видим в нашей новой папке продукта, мы сгенерировали 3 файла, файл __init__.py, который должен быть пустым, файл models.py и другой файл views.py . Уже с этой структурой мы изменим наш __init__.py корня нашего приложения, где важно не путать с __init__.py продуктов.
 из колбы импортировать register_blueprint (product) db.create_all () 
Что мы сделали, так это то, что после создания объекта db мы импортировали представления нашей новой папки и зарегистрировали план, наконец, мы сообщаем объекту db, что он должен создать все необходимые таблицы. Теперь мы должны изменить наш файл models.py внутри продукта, и мы разместим следующий код:
 из flasko импортировать dbclass Продукт (db.Model): id = db.Column (db.Integer, primary_key = True) name = db.Column (db.String (255)) цена = db.Column (db.Float) def __init__ (self, name, price): self.name = имя self.price = цена def __repr __ (self): вернуть ''% self.id 
Здесь в основном то, что мы делаем, это определяем класс, который будет принимать в качестве атрибутов поля, которые мы собираемся требовать от нашего продукта, также в нем есть пара методов для определения и представления нашей модели.
Как только вышеперечисленное выполнено, мы идем в файл views.py, в котором мы должны создать код, который позволяет нам взаимодействовать с нашей моделью, для этого мы должны написать следующее:
 из запроса на импорт из фляги, jsonify, Blueprint из приложения для импорта flasko, dbf из flasko.producto.models import ProductProduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ start') def start (): вернуть «Добро пожаловать во Flasko» @ app.route ('/ product /') def product (id): product = Product.query.get_or_404 (id) вернуть 'Product -% s, $% s'% (product .name, product.price) @ app.route ('/ products') of products (): products = Product.query.all () res = {} для продукта в продуктах: res [product.id] = {'name ': product.name, ' price ': str (product.price)} return jsonify(res)@app.route (' / create-product ', method = [' POST ', ]) def create_product (): name = request.form.get ('name') price = request.form.get ('price') product = Product (имя, цена) db.session.add (product) db.session.commit () return 'Товар был успешно создан 
Первое, что мы замечаем, это то, что у нас в этом файле гораздо больше содержимого, чем в остальной части нашего приложения, и это потому, что именно здесь развивается вся жизнь нашего представления, первый путь - начало нашего приложения и не влечет за собой больших загадок.
Второй и третий маршруты предназначены для консультаций, где мы можем искать по идентификатору продукта, и если нет ничего, что могло бы вернуть страницу 404, у нас также есть возможность перечислить все продукты, доступные в нашей базе данных .
Последний маршрут - это тот, который позволяет нам с помощью метода POST создавать продукт и его последующее хранение в базе данных, для этого мы создаем экземпляр нашей модели Product, где затем передаем этот атрибут объекту db и его методам add и commit Мы добавляем в базу данных .

$config[ads_text5] not found

Добавить товары в нашу базу данных


Теперь осталось протестировать наше приложение, добавив контент, который будет добавлен в нашу базу данных, если мы помним в файле views.py, мы создаем представление, которое получает данные с помощью метода POST, и именно оно отвечает за создание Вставки в него. Чтобы добавить элементы, мы будем использовать модуль Python, называемый запросами, который позволяет отправлять данные через POST. Если у нас их нет, мы просто должны установить их с помощью следующей команды:
 запросы на установку pip 
Во вторичной консоли мы запустим наше приложение flasko, чтобы сервер работал и мог отправлять запросы из Python . В нашей интерактивной консоли Python, к которой мы обращаемся при написании слова python, мы должны сделать следующее:
 Request.post ('http://127.0.0.1:5000/create-product', data = {'name': 'product1', 'price': '50'}) 
Что мы сделали, так это отправили запрос через POST на наш маршрут, который добавляет элементы в базу данных, параметры передаются в словаре Python, который очень похож на объект JSON .
Это должно дать нам код 200, который означает, что мы успешно выполнили наш запрос, это можно увидеть на следующем рисунке:

$config[ads_text5] not found

{title}


Если мы теперь перейдем к нашему приложению в представлении продуктов, то увидим, как мы получаем то, что мы только что вводили через консоль:

{title}


Мы видим, что у нас есть список в формате JSON с нашим продуктом, который мы только что добавили, если мы теперь выполним поиск по маршруту product / 1, мы увидим, что мы также получим его:

{title}


Конечно, это далеко не то, что нужно внедрять в производство, однако это помогает нам изучить основы моделей и постоянства данных в Flask, самое интересное то, что, поскольку мы не делали прямые запросы SQL, если мы изменим соединение Например, наше приложение будет функционировать так, как будто ничего.
На этом мы закончили этот урок, мы уже знаем, как создавать модели во Flask, кроме того, мы научились манипулировать SQLAlchemy ORM простым, но очень полезным способом, где эти компоненты очень важны, когда мы создаем гораздо большие приложения, поскольку они позволяют нам достигать результатов. Более сложный с меньшим количеством работы.

$config[ads_text6] not found