На диаграмме показаны две таблицы: 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()для обеспечения правильной работы с базой данных
db.session.commit() для сохранения изменений