Для подстановки значений в запрос 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 может быть более гибким для сложных структур баз данных. Выбор конкретного способа зависит от вашего приложения и требований к нему.