Как подставить значение в запрос sqlite?

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

Для этого можно воспользоваться двумя способами:

1. С использованием встроенного модуля sqlite3:

import sqlite3

# Подключаемся к базе данных
connection = sqlite3.connect('example.db')
cursor = connection.cursor()

# Выполняем параметризованный запрос
cursor.execute("INSERT INTO table_name (column_name) VALUES (?)", (value,))

# Сохраняем изменения
connection.commit()

# Закрываем соединение
connection.close()

2. С использованием ORM (например, SQLAlchemy):

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

# Определяем модель данных
class Table(Base):
    __tablename__ = 'table_name'
    id = Column(Integer, primary_key=True)
    column_name = Column(String)

# Создаем соединение с базой данных
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)

# Создаем сессию
Session = sessionmaker(bind=engine)
session = Session()

# Добавляем новую запись с параметризованным запросом
new_entry = Table(column_name=value)
session.add(new_entry)
session.commit()

# Закрываем сессию
session.close()

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