Автор оригинала: Pankaj Kumar.
В этой статье мы научимся подключать наше приложение Flask к системам баз данных PostgreSQL с помощью ORM – Объектно-реляционного картографа , называемого Flask SQLAlchemy.
Что такое PostgreSQL?
Подобно системе управления базами данных MySQL, PostgreSQL-это еще один тип СУБД, используемый для доступа, хранения и обработки данных в виде таблиц базы данных.
PostgreSQL также использует SQL – структурированный язык запросов для доступа и обработки баз данных, а также для выполнения различных задач в PostgreSQL
Базовая структура PostgreSQL
Данные хранятся в базе данных Postgres в виде Таблицы . Типичная таблица Postgres выглядит следующим образом:
1 | Алия | IX | B |
2 | Сниппи | X | A |
3 | Рэй | VIII | D |
4 | Ким | ВИ | A |
5 | Дженнифер | XII | B |
6 | Джинни | X | A |
Строки называются записи , а столбцы – поля . Таким образом, в приведенной выше таблице у нас есть 6 записей и 4 поля.
Разница между MySQL и PostgreSQL
Хотя и MySQL , и PostgreSQL принадлежат к СУБД , между ними есть некоторые ключевые различия.
- Одно из основных различий между MySQL и PostgreSQL заключается в том, что PostgreSQL-это ORDBMS (Система управления объектно-реляционными базами данных), в то время как MySQL-это управляемая сообществом СУБД.
- Еще одним преимуществом PostgreSQL перед MySQL является то, что он может поддерживать функции современных приложений, таких как JSON, XML и т. Д. в то время как MySQL может поддерживать только JSON.
Зачем SQLAlchemy подключать PostgreSQL к приложению Flask?
SQLAlchemy-это реляционный картограф ORM-объектов , написанный на Python. Это дает возможность взаимодействовать с базами данных без использования инструкций SQL.
Он обеспечивает дополнительный слой поверх SQL, который позволяет нам использовать базы данных и таблицы так же, как объекты класса Python. Нам просто нужно создать объект класса, а SQLAlchemy позаботится обо всем остальном!
В Flask, в отличие от Django, который поставляется с предварительно построенной ФОРМОЙ в виде моделей Django, он не имеет предварительно построенной ФОРМЫ.
Следовательно, нам необходимо установить библиотеку Flask-SQLAlchemy ORM для использования моделей в этой веб-среде
Настройка PostgreSQL в вашей системе
В этом разделе мы загрузим и настроим все необходимые пакеты для нашего проекта Flask-SQLAlchemy – Postgres.
1. Установка оболочки PostgreSQL
Чтобы установить PostgreSQL, перейдите по ссылке здесь . После установки PostgreSQL откройте оболочку SQL и настройте имя пользователя и пароль для подключения к БД.
Выполните приведенную ниже команду, чтобы открыть оболочку в терминале:
sudo su postgres pqsl
В случае Windows выполните прямой поиск SQL shell в меню поиска.
Я сохранил данные о подключении по умолчанию ( показано в скобках ).
- Сервер: localhost
- База данных: postgres
- Порт: 5433
- Имя пользователя: postgres
После ввода пароля вам будет предложено войти в базу данных PostgreSQL по умолчанию.
Теперь давайте создадим новую базу данных с именем Flask для хранения наших данных.
CREATE DATABASE;
Здесь мы используем только синтаксис SQL. Ознакомьтесь с нашим учебником SQL на веб-сайте JournalDev, чтобы получить больше знаний о языке запросов.
Чтобы изменить текущую базу данных на Flask DB, используйте команду:
\c;
Вот и все, теперь вы находитесь в новой колбе DB.
2. Установка инструмента адаптера psycopg2
Нам также нужен psycopg2, который является адаптером базы данных PostgreSQL для Python. Давайте запустим команду pip :
pip install psycopg2-binary
Нам также нужен || psycopg2, || который является адаптером базы данных PostgreSQL для Python. Давайте запустим команду || pip ||:
Нам также нужен || psycopg2, || который является адаптером базы данных PostgreSQL для Python. Давайте запустим команду || pip ||:
Чтобы установить пакет, просто запустите код:
pip install flask-sqlalchemy
Также нам нужно установить Flask-Migrate .
Flask-Migrate , использует Перегонный куб , который является легким инструментом миграции базы данных. Это помогает нам создавать/обновлять базы данных и таблицы. Он также позволяет нам обновлять существующую таблицу в случае удаления или создания новых полей таблицы.
Чтобы установить Flask-Migrate, выполните:
pip install Flask-Migrate
То есть нам нужно !! А теперь давайте испачкаем руки !!
Реализация подключения к базе данных PostgreSQL в Flask с помощью SQLAlchemy
В этом разделе мы создадим простое приложение Flask, которое хранит информацию о пользователе в базе данных.
1. Создание модели колбы
Модель-это класс Python, представляющий таблицу в базе данных. Он содержит информацию о структуре таблицы.
В Flask более систематично сохранять всю информацию о БД и моделях в отдельном файле под названием – models.py расположен рядом с нашим основным файлом приложения.
Типичный models.py файл выглядит следующим образом:
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Model_name(db.Model): __tablename__ = 'table_name' field1_name = db.Column(db.Field1Type, primary_key...) field2_name = db.Column(db.Field2Type) field3_name = db.Column(db.Field3Type) def __init__(self, Field1_name,Field1_name,Field1_name): self.field1_name = field1_name self.field2_name = field2_name self.field3_name = field3_name def __repr__(self): return f""
Это похоже на классический класс Python . Они указывают поля таблицы и их представление.
Поэтому давайте построим небольшую Информационная модель Таблица для хранения информации о пользователе:
models.py :
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class InfoModel(db.Model): __tablename__ = 'info_table' id = db.Column(db.Integer, primary_key = True) name = db.Column(db.String()) age = db.Column(db.Integer()) def __init__(self, name,age): self.name = name self.age = age def __repr__(self): return f"{self.name}:{self.age}"
2. Кодирование нашего Основного приложения Для Колб
Теперь мы свяжем Postgres с нашим приложением Flask . Синтаксис таков:
from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from models import db, InfoModel app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://: @ :5432/ " app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) migrate = Migrate(app, db) #general Flask Code @app.route('') # Your code if __name__ == '__main__': app.run(debug=True)
Здесь,
- Мы создаем объект колбы – приложение
- Затем настройте соединение PostgreSQL
- Я сохранил SQL_TRACK_MODIFICATIONS в False только для простоты.
- Затем передайте объект app объекту SQLAlchemy db
- Создайте объект миграции для миграции.
Вот и все!
Также добавьте следующие представления в app.py файл.
apps.py:
from flask import Flask,render_template,request from flask_migrate import Migrate from models import db, InfoModel app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://postgres:1148@localhost:5432/flask" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) migrate = Migrate(app, db) @app.route('/form') def form(): return render_template('form.html') @app.route('/login', methods = ['POST', 'GET']) def login(): if request.method == 'GET': return "Login via the login Form" if request.method == 'POST': name = request.form['name'] age = request.form['age'] new_user = InfoModel(name=name, age=age) db.session.add(new_user) db.session.commit() return f"Done!!" if __name__ == '__main__': app.run(debug=True)
Мы можем взаимодействовать с Таблицей так же, как с объектом класса. Мы используем:
- db.session.add() для добавления новых данных
- db.session.commit() для сохранения изменений
3. Реализация кода колбы
Последнее, что осталось, – это запустить миграцию. Следовательно, выполните команды:
python db init python db migrate python db upgrade
Вот и все,
Теперь запустите сервер
python app.py
И давайте проверим браузер. Перейдите в раздел ” /форма “
Нажмите Отправить
Вот и все, теперь в нашей оболочке PostgreSQL введите:
SELECT * FROM info_table
И данные будут прямо там!!
Идеально!
Вывод
Вот и все, ребята!! Все это было связано с настройкой соединений Flask PostgreSQL и SQLAlchemy. Увидимся в следующий раз !! До тех пор, Счастливого Кодирования!!