Junior — Middle
69
Каким образом SQLAlchemy предотвращает риск SQL-инъекций при работе с базой данных?
Answer from AI
sobes.tech AI
SQLAlchemy предотвращает SQL-инъекции благодаря использованию параметризованных запросов и ORM-абстракции. Вместо того чтобы вручную формировать SQL-строки с подставляемыми значениями, SQLAlchemy позволяет задавать параметры отдельно от SQL-кода.
Например, при использовании ORM вы работаете с объектами и их атрибутами, а SQLAlchemy самостоятельно генерирует безопасный SQL-запрос с экранированием значений.
Пример:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
# Параметризованный запрос с использованием text()
user_id = 5
with engine.connect() as conn:
result = conn.execute(text("SELECT * FROM users WHERE id = :id"), {"id": user_id})
for row in result:
print(row)
Здесь значение user_id не вставляется напрямую в строку запроса, а передаётся отдельно, что исключает возможность внедрения вредоносного SQL-кода.