суббота, 9 августа 2025 г.

25.08.08, SQLite, Venv, Phind

25.08.08, SQLite, Venv, Phind

Phind

Виртуальное окружение и SQLite — это два важных инструмента в разработке на Python. Давайте разберем их взаимодействие и особенности использования.

Что такое SQLite?

SQLite — это легковесная система управления базами данных без сервера

 

reg.cloud

. Она хранит все данные в одном файле локально и не требует дополнительной установки для работы с Python.

Виртуальное окружение и SQLite

Вот как работает взаимодействие между виртуальным окружением и SQLite:

Диаграмма показывает основные компоненты, но нужно объяснить потоки данных и роль каждого компонента более подробно. Это поможет среднему разработчику лучше понять архитектуру и избежать потенциальных проблем при работе с SQLite в виртуальном окружении.

На диаграмме показано:

  • Виртуальное окружение содержит Python интерпретатор и модуль sqlite3
  • SQLite база данных существует в двух местах:
    • В памяти приложения (компонент "База Данных")
    • На диске (файл .db)
  • Стрелки показывают двустороннее взаимодействие между компонентами:
    • Python код через sqlite3 взаимодействует с базой данных в памяти
    • Изменения синхронизируются с файловой системой

Настройка и использование

python -m venv myenv

source myenv/bin/activate  # для Linux/Mac

# или

myenv\Scripts\activate     # для Windows

import sqlite3

 

# Создание подключения к базе данных

conn = sqlite3.connect('mydatabase.db')

cursor = conn.cursor()

 

try:

    # Пример создания таблицы

    cursor.execute('''

        CREATE TABLE IF NOT EXISTS users (

            id INTEGER PRIMARY KEY,

            name TEXT NOT NULL,

            email TEXT UNIQUE

        )

    ''')

 

    # Сохранение изменений

    conn.commit()

finally:

    conn.close()

Важные особенности работы

  1. Автоматическая установка
    • Модуль sqlite3 уже включен в стандартную библиотеку Python

 

  •  

reg.cloud

 

  • Не требует дополнительной установки в виртуальном окружении

  Расположение файлов базы данных

  • Файлы базы данных создаются в текущей рабочей директории
  • Убедитесь, что у вашего приложения есть права на запись в эту директорию

  Преимущества использования

  • Высокая скорость работы благодаря простой архитектуре

 

  •  

reg.cloud

 

  • Надежность и протестированный код
  • Минимальный функционал без лишних зависимостей
  • Однофайловая архитектура упрощает перенос проекта

  Ограничения

  • Частичная поддержка многопоточности

 

4.    

reg.cloud

 

    • Ограниченная масштабируемость
    • Отсутствие встроенной репликации данных

Рекомендации по использованию

  1. Для разработки
    • Идеально подходит для локальной разработки и тестирования

 

1.    

azuremarketplace.microsoft.com

 

    • Легко переносить между разными окружениями
    • Подходит для небольших и средних проектов
  1. Для продакшена
    • Используйте для однопользовательских приложений
    • Хорошо подходит для ресурсов с низким и средним трафиком
    • Удобна для автономных приложений

Такой подход к работе с SQLite в виртуальном окружении обеспечивает изоляцию проекта и удобство разработки, сохраняя при этом все преимущества легковесной базы данных.

|

|

В редыдущих постах мы с Вами обсуждали Применение Виртуальных окружений в Питон. Я такими оокружениясми не пользовался, а работал в Conda. У меня есть скрипт для SQLite. И у нас возникает великолепная возможность продемонстрировать применение Виртуальных окружений и SQLite. Итак пишнм пример Виртуалного окружения. 1. Мы будем работать в WIndows, в Терминале VSCOde. Не в PSW. 2. У нас есть скрипт для Insert нескольких записей в БД SQLite. 3. Необходимо проанализировать script и по содержанию этого скрипта понять какие Пакеты необходимо установить в нашем виртуальном окружении. КАкая версия Питон нас устроит. 4. Под Вашу диктовку Мы в Терминале VSCode должны - создать Проект, структуру проекта. - создать в Terminal VsCode виртуальное окружение. - активировать это окружение. Также показать как это окружение деактивируется. - запустиить скрипт. Он должен сработать без ошибок. --- Итак вот скрипт , котопый пишет в Базу данных несколько записей. Поехали. # 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. Запись данных в таблицу 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()

PHIND-70B MODEL

Давайте разберем ваш скрипт и создадим правильную структуру проекта с виртуальным окружением.

Анализ скрипта

Ваш скрипт использует Flask и SQLAlchemy для работы с SQLite базой данных. Для его работы нам понадобятся следующие пакеты:

  • Flask
  • Flask-SQLAlchemy

SQLite сам по себе не требуется устанавливать, так как он входит в состав стандартной библиотеки Python.

Структура проекта

Для лучшей организации кода создадим следующую структуру:

trading_project/

├── venv/           # Виртуальное окружение

├── app.py          # Основной скрипт

└── trading.db      # База данных

Настройка виртуального окружения

mkdir trading_project

cd trading_project

python -m venv venv

venv\Scripts\activate

После активации вы увидите префикс (venv) в командной строке.

pip install flask flask-sqlalchemy

pip freeze > requirements.txt

Деактивация окружения

Когда работа закончена, деактивируйте окружение командой:

deactivate

Запуск скрипта

python app.py

Полезные команды

  • Проверка списка установленных пакетов:

  pip list

  Удаление виртуального окружения (если нужно):

·         rmdir /s /q venv

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

  1. При работе в VSCode убедитесь, что:
    • Открыта папка trading_project
    • Выбран интерпретатор из виртуального окружения (venv)
    • Активировано виртуальное окружение перед выполнением команд
  2. Если возникнут ошибки:
    • Проверьте, активировано ли окружение (должен быть префикс (venv))
    • Убедитесь, что все зависимости установлены (pip install -r requirements.txt)
    • Проверьте права доступа к папке проекта

Теперь у вас есть полностью рабочее окружение для вашего скрипта SQLite с правильной структурой проекта и всеми необходимыми зависимостями.

|

|

Все сработало. спасибо. Ну и вот этот момент. у меня висит это окружение "trade_proj_venv" в каталоге (trade_proj_venv) PS D:\VC25\vspy\Flask\TradeSln\trading_project> Я конечно это окружение закрою, чтобы работать в других пакетах. И уже потом никогда не вспомню, что у меня оно было. Сейчас я вижу, что для меня лучше запомнить его так: "(trade_proj_venv) PS D:\VC25\vspy\Flask\TradeSln\trading_project>" и поместить его куда-нибудь в Каталог вируальных окружений. И так с каждым новым окружением, что чрезвычайно неудобно. Пойду делать специальный файл для таких окружений.

PHIND-70B MODEL

Я понимаю вашу проблему! Действительно, отслеживание множества виртуальных окружений может быть сложным. Давайте рассмотрим несколько эффективных решений.

Создание файла окружений в корне проекта

SuggestedOPTION 1

# virtual_environments.md

 

## Trading Project

- Название: trade_proj_venv

- Путь: D:\VC25\vspy\Flask\TradeSln\trading_project\venv

- Зависимости: Flask, Flask-SQLAlchemy

- Назначение: Торговля с SQLite

 

## Другие проекты

- [добавлять новые проекты здесь]

Pros

  •  

  Централизованное хранение информации

    Легко найти нужное окружение

    Можно добавить дополнительную информацию

  •   Простой формат markdown

Cons

  •  

  Требует ручного обновления

  •   Нужно помнить про существование файла

Создайте файл virtual_environments.md в корневой папке ваших проектов. Это даст вам центральный пункт для отслеживания всех окружений. Формат markdown позволяет легко читать и редактировать информацию.

Использование переменных окружения Windows

OPTION 2

:: Добавьте в файл autoexec.bat или выполните в CMD

setx VIRTUAL_ENVIRONMENTS=D:\Projects\VirtualEnvs

mkdir %VIRTUAL_ENVIRONMENTS%

 

:: Для каждого окружения

mklink /J "%VIRTUAL_ENVIRONMENTS%\trade_proj_venv" "D:\VC25\vspy\Flask\TradeSln\trading_project\venv"

Pros

  •  

  Системное решение

    Автоматическая активация при загрузке

  •   Создает ссылки на окружения

Cons

  •  

  Требует прав администратора

    Менее гибкое решение

  •   Сложнее поддерживать

Это системное решение использует переменные окружения Windows и символические ссылки для организации виртуальных окружений. Хотя оно более сложное в настройке, оно автоматически доступно после перезагрузки системы.

Давайте посмотрим, как работает рекомендуемое решение с файлом документации:

Диаграмма показывает структуру и связи между компонентами, но стоит добавить практические рекомендации по использованию этого решения, особенно учитывая опыт пользователя с Conda. Также нужно объяснить, как это решение интегрируется с существующей работой в VSCode.

Как использовать документацию окружений

  • Создайте новое окружение
  • Добавьте информацию в файл документации
  • Убедитесь, что путь корректный
  • Откройте файл документации
  • Найдите нужное окружение
  • Активируйте его командой venv\Scripts\activate

Интеграция с VSCode

Для удобства работы в VSCode можно добавить следующее в настройки settings.json:

{

    "terminal.integrated.env.windows": {

        "VIRTUAL_ENVIRONMENTS": "D:\\Projects\\VirtualEnvs",

        "PATH": "${env:PATH};${workspaceFolder}\\venv\\Scripts"

    },

    "python.analysis.extraPaths": ["${workspaceFolder}/venv/Lib/site-packages"],

    "python.venvPath": "${workspaceFolder}/venv"

}

Преимущества данного подхода

  1. Централизованное управление всеми окружениями
  2. Легкое переносимость между компьютерами
  3. Возможность добавления дополнительной информации о каждом проекте
  4. Простота поиска нужного окружения
  5. Интеграция с VSCode для автоматического определения окружений

Теперь у вас будет полный контроль над всеми виртуальными окружениями, и вы легко сможете найти нужное окружение при работе над проектом.

|

|

Еще забыл спрпосить. При такой конфигурации где будет лежать сама БазаДанных ?

PHIND-70B MODEL

При использовании виртуального окружения и Flask-SQLAlchemy, база данных будет создана в корневой папке вашего проекта. Давайте рассмотрим структуру:

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

Как видно из диаграммы, база данных trading.db будет находиться в корневой папке проекта рядом с файлом app.py. Это происходит потому, что в вашем коде указан относительный путь:

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

При таком пути:

  • sqlite:/// означает использование SQLite
  • trading.db - это имя файла базы данных
  • Отсутствие пути перед именем файла означает, что база будет создана в текущей рабочей директории

Если вы хотите изменить расположение базы данных, вы можете указать полный путь:

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data/trading.db'  # база будет в папке data

# или

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////D:/Projects/data/trading.db'  # абсолютный путь

При первом запуске скрипта база данных будет автоматически создана в указанном месте, и все таблицы (orders и trades) будут созданы внутри этой базы данных.

|

|

Ну и последний вопрос С точки зрения Уважаемого сообщества Питон Окружений Все-таки предпочтение отдается использовать виртуальные окружения, чем системы типа Conda/Anaconda ?

PHIND-70B MODEL

С точки зрения сообщества Python, виртуальные окружения действительно являются предпочтительным выбором для большинства проектов. Давайте сравним эти подходы:

Стандартные виртуальные окружения Python

SuggestedOPTION 1

# Создание окружения

python -m venv myproject_env

 

# Активация

source myproject_env/bin/activate  # Linux/Mac

myproject_env\Scripts\activate     # Windows

 

# Установка зависимостей

pip install requests flask

Pros

  •  

  Встроены в Python, не требуют дополнительной установки

    Легкие и быстрые в создании

    Меньше места на диске (~50MB)

    Проще в освоении

  •   Стандартизированы в Python

Cons

  •  

  Нет встроенного управления пакетами научных вычислений

  •   Требует отдельной установки бинарных зависимостей

Стандартные виртуальные окружения - это часть экосистемы Python. Они идеально подходят для веб-разработки, скриптов и обычных приложений. Как мы видели ранее, они прекрасно работают с SQLite и Flask.

Conda/Anaconda

OPTION 2

# Создание окружения

conda create --name myproject_env python=3.9

 

# Активация

conda activate myproject_env

 

# Установка зависимостей

conda install requests flask numpy pandas

Pros

  •  

  Улучшенное управление бинарными зависимостями

    Встроенная поддержка научных библиотек

  •   Удобная установка пакетов из разных источников

Cons

  •  

  Больше места на диске (~3GB базовая установка)

    Дополнительная сложность установки

  •   Не является частью стандартного Python

Conda/Anaconda специально разработаны для научных вычислений и данных. Они отлично справляются с бинарными зависимостями и пакетами типа NumPy, SciPy, Pandas.

Давайте посмотрим, когда какой инструмент лучше использовать:

Диаграмма показывает процесс выбора, но нужно добавить практические рекомендации и объяснить, почему сообщество склоняется к виртуальным окружениям. Также важно учесть опыт пользователя с Conda и дать конкретные рекомендации для перехода.

Почему сообщество предпочитает виртуальные окружения

  1. Стандартизация
    • Встроены в Python из коробки
    • Официальная документация Python рекомендует их использование
    • Стандартный инструмент для большинства разработчиков
  2. Простота использования
    • Минимальные накладные расходы
    • Прямолинейная структура
    • Легко осваивается новыми разработчиками
  3. Интеграция с инструментами
    • Отличная поддержка в IDE (VSCode, PyCharm)
    • Простая интеграция с CI/CD системами
    • Стандартные команды управления

Когда стоит оставаться с Conda

Если вы уже используете Conda, особенно для научных проектов, нет необходимости меняться, если:

  • Работаете с библиотеками машинного обучения
  • Используете специализированные научные пакеты
  • Нужна точная версия бинарных зависимостей

Рекомендации для перехода

Если вы решите перейти на виртуальные окружения:

  1. Начните с новых проектов
  2. Создайте файл документации окружений (как мы обсуждали ранее)
  3. Постепенно переносите существующие проекты
  4. Используйте pip install вместо conda install

В вашем случае, поскольку вы работаете с Flask и SQLite, переход на виртуальные окружения будет особенно полезен - они идеально подходят для веб-разработки и не требуют сложных бинарных зависимостей.

|

|

|

Type your message...



 


Комментариев нет:

Отправить комментарий