«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу использовать названные параметры с помощью sqlalchemy `connection.execute` для более безопасных и более читаемых запросов SQL?

Как я могу использовать названные параметры с помощью sqlalchemy `connection.execute` для более безопасных и более читаемых запросов SQL?

Опубликовано в 2025-03-24
Просматривать:559

How Can I Use Named Parameters with SQLAlchemy's `connection.execute` for Safer and More Readable SQL Queries?

Использование именованных параметров с помощью sqlalchemy connection.execute

sqlalchemy's connection.execute позволяет выполнять sql Queries при преобразовании результатов в цепь Maps. Первоначально реализовано с помощью форматирования строки, чтобы включить параметры в запрос, этот метод может быть улучшен для использования именованных параметров для большей эффективности и безопасности.

изменение процедуры

, чтобы изменить код, чтобы принять названные параметры, следующие шаги могут быть предприняты:

    SQL = Text («SELECT users.fullName || ',' || address.email_address как заголовок от пользователей, адресах users.id = address.user_id и users.name. : e2) ")
  1. ]

    sql = text("SELECT users.fullname || ', ' || addresses.email_address AS title FROM users, addresses WHERE users.id = addresses.user_id AND users.name BETWEEN :x AND :y AND (addresses.email_address LIKE :e1 OR addresses.email_address LIKE :e2)")
  2. conn.execute (sql, {" x ":" m "," y ":" z "," e1 ":" %@aol.com "," e2 ":" y ":" z "," e1 ":" %@aol.com "," e2 " "%@msn.com"})
  3. conn.execute(sql, {"x": "m", "y": "z", "e1": "%@aol.com", "e2": "%@msn.com"})
    . Связано с форматированием строки, которое может привести к уязвимости в инъекциях SQL. Подходы

, в качестве альтернативы, можно определить функцию, чтобы обернуть функциональность выполнения и принять именованные параметры в виде словаря: def SQL_TO_DATA (SQL, значения): Результат = [] Connection = Engine.connect () пытаться: rows = connection.execute (sql, значения) ... окончательно: connection.close () Вернуть результат

с этим подходом, запросы могут быть выполнены с помощью:

    sql = 'select ...' data = {'user_id': 3} Результаты = SQL_TO_DATA (SQL, DATA)
  • Этот метод включает использование именованных параметров при сохранении основной функциональности исходного кода.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3