четверг, 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() для сохранения изменений
  • вторник, 27 мая 2025 г.

    SQLite, SqlLocalDB, SQLite, MSSQL localDB,

    SQLite,SqlLocalDB,SQLite vs MSSQL localDB, MSSQL Versions

    SQLite, SqlLocalDB, 

    SQLite vs MSSQL localDB 

    https://ask.chadgpt.ru/share/9ef35e6e-d478-41e4-bc48-dc0762e9d5bd

    SQLite — это легковесная, встраиваемая реляционная база данных. Она очень проста в использовании, не требует отдельного серверного процесса и хранит все данные в одном файле на диске. Основные её преимущества — минимальный размер, кроссплатформенность, простота развертывания и отсутствие необходимости в установке сервера или сложной настройке. SQLite часто применяется в мобильных приложениях, небольших десктопных приложениях, для прототипирования и случаев, когда не требуется работа с большими объёмами данных или высокой нагрузкой.

    MS SQL Server LocalDB — это упрощённая версия Microsoft SQL Server, предназначенная для разработки и тестирования. LocalDB также проста в установке, не требует полноценного серверного окружения и запускается только по требованию пользователя или приложения. Она совместима с большинством инструментов SQL Server, таких как Management Studio, поддерживает те же типы данных и большинство функций "большого" SQL Server. LocalDB обычно используется .NET разработчиками, когда нужно локальное окружение для разработки с возможностью миграции на полноценный сервер SQL Server без изменений в коде.

    Ключевые отличия:

    • Требования к установке: SQLite поставляется просто в виде библиотеки — обычно это всего один DLL-файл; LocalDB требует установки компонента SQL Server LocalDB, что занимает несколько сотен мегабайт.
    • Производительность: SQLite быстрее запускается и меньше потребляет ресурсов при работе с небольшими объёмами данных и небольшим числом одновременных подключений. LocalDB оптимизирована для работы с большими объёмами данных и поддерживает полноценную многопоточность.
    • Возможность масштабирования: SQLite – это полностью файловая БД, рассчитанная на одного пользователя (или небольшое число пользователей в локальном доступе), не поддерживает полноценную мультиклиентскую работу и масштабирование. LocalDB же, хотя и локальна, поддерживает многопользовательский доступ (в пределах одной машины, правда) и позволить относительно легко перейти на полноценный SQL Server.
    • Совместимость с инструментами и возможностями: LocalDB хорошо интегрирована с инструментами Microsoft, поддерживает расширенные типы данных, хранимые процедуры, триггеры и многие другие функции SQL Server. SQLite проще и не имеет многих продвинутых возможностей — например, обычная версия SQLite не поддерживает строгую типизацию, хранимые процедуры или расширенные типы данных.
    • Требования к платформе: SQLite — кроссплатформенная (Windows, Linux, macOS, Android, iOS), LocalDB работает только на Windows.

    Вывод:
    SQLite лучше всего подходит для кроссплатформенных, легковесных проектов, прототипирования, мобильных приложений и ситуаций, когда вам нужна быстро развертываемая автономная база данных без лишних зависимостей. MS SQL Server LocalDB больше подходит для разработчиков под Windows, использующих стек .NET, которым важно максимально простое локальное окружение, совместимое с промышленными версиями SQL Server, а также расширенные возможности реляционной СУБД Microsoft.

    ConnectionString, DataLocation, SQLDVLP25, SQLEXPRESS

    ConnectionString, DataLocation, SQLDVLP25, SQLEXPRESS

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

    WIN-0EMQO515V3S\SQLDVLP25

    Data Source=WIN-0EMQO515V3S\SQLDVLP25;Integrated Security=True;Connect Timeout=30;Encrypt=True;Trust Server Certificate=True;Application Intent=ReadWrite;Multi Subnet Failover=False

    D:\SQLDVLP25\MSSQL16.SQLDVLP25\MSSQL\DATA\

    D:\SQLDVLP25\MSSQL16.SQLDVLP25\MSSQL\Backup

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

    WIN-0EMQO515V3S\SQLEXPRESS

    Data Source=WIN-0EMQO515V3S\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False

    D:\Data\MSSQL16.SQLEXPRESS\MSSQL\DATA

    D:\Data\MSSQL16.SQLEXPRESS\MSSQL\Backup

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