Рубрики
Без рубрики

Колба PostgreSQL – SQLAlchemy

В этой статье мы научимся подключать наше приложение Flask к системам баз данных PostgreSQL с помощью реляционного картографа ORM – объектов, называемого Flask

Автор оригинала: 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.

Postgres

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

И данные будут прямо там!!

PostgreSQL

Идеально!

Вывод

Вот и все, ребята!! Все это было связано с настройкой соединений Flask PostgreSQL и SQLAlchemy. Увидимся в следующий раз !! До тех пор, Счастливого Кодирования!!