четверг, 7 августа 2025 г.

SQLite, Phind

На диаграмме показаны две таблицы: ORDER и TRADE. Хотя в исходном коде связь между ними не определена явно, на практике они часто связаны через поле symbol, которое присутствует в обеих таблицах. PK в диаграмме означает Primary Key (первичный ключ) - уникальный идентификатор записи в таблице.

Теперь реализуем создание структуры базы данных и запись данных:

# 1. Создание структуры базы данных

from flask import Flask

from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///trading.db'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False


db = SQLAlchemy(app)


# Определяем модели

class Order(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    symbol = db.Column(db.String(10), nullable=False)

    price = db.Column(db.Float, nullable=False)

    quantity = db.Column(db.Integer, nullable=False)


class Trade(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    symbol = db.Column(db.String(10), nullable=False)

    price = db.Column(db.Float, nullable=False)

    quantity = db.Column(db.Integer, nullable=False)


# Создаем структуру базы данных

with app.app_context():

    db.create_all()

------------------------------------------------------------------------------

2. Запись данных в базу данных (по одной таблице):

-------------------------------------------------------------------------------

# 2. Запись данных в таблицу Order

with app.app_context():

    # Очищаем таблицу, если нужно

    Order.query.delete()

    

    # Создаем новую запись

    order = Order(

        symbol='AAPL',

        price=150.50,

        quantity=100

    )

    # Добавляем и сохраняем запись

    db.session.add(order)

    db.session.commit()

# 3. Запись данных в таблицу Trade

with app.app_context():

    # Очищаем таблицу, если нужно

    Trade.query.delete()

    # Создаем новую запись

    trade = Trade(

        symbol='AAPL',

        price=150.75,

        quantity=50

    )

    

    # Добавляем и сохраняем запись

    db.session.add(trade)

    db.session.commit()

---------------------------------------------------

Важные замечания:

  • Каждый блок кода должен выполняться отдельно
  • Перед записью в каждую таблицу выполняется очистка для демонстрационных целей
  • Используется app.app_context() для обеспечения правильной работы с базой данных
  • flask-sqlalchemy.readthedocs.io
  • После каждой операции добавления записи вызывается db.session.commit() для сохранения изменений