"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je utiliser des paramètres nommés avec `Connection.execure` de SQLALCHEMY pour les requêtes SQL plus sûres et plus lisibles?

Comment puis-je utiliser des paramètres nommés avec `Connection.execure` de SQLALCHEMY pour les requêtes SQL plus sûres et plus lisibles?

Publié le 2025-03-24
Parcourir:318

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

Utilisation de paramètres nommés avec Sqlalchemy Connection.ExECUTE

SQLALCHEMY Connection.ExecUte Method permet l'exécution de requêtes SQL tout en transformant les résultats en un argent de mapes. Initialement implémenté avec le formatage des chaînes pour inclure des paramètres dans la requête, cette méthode peut être améliorée pour utiliser les paramètres nommés pour une plus grande efficacité et sécurité. Fonction Text () de Sqlalchemy pour analyser la chaîne SQL:

sql = text ("Select Users.fullName || ',' || adresses.email_address en tant que titre à partir des utilisateurs, Adresses où utilisateurs.id = adresse : e2) ")

passez des paramètres nommés à la fonction EXECUTE ():

    conn.execcute (sql, {" x ":" m "," y ":" z "," e1 ":" %@aol.com "," e2 ":": " "%@msn.com"})
  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)")
    Benefits of Named Parameters
  2. Employing named parameters offers several benefits:

    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)")
  3. Reduced Risk of SQL Injections:
By utilizing named parameters, developers can avoid the potential risques associés à la formatage des chaînes, qui peuvent conduire à des vulnérabilités d'injection SQL. Approches

Alternativement, on peut définir une fonction pour envelopper la fonctionnalité d'exécution et accepter les paramètres nommés en tant que dictionnaire:

def sql_to_data (sql, valeurs): résultat = [] connexion = moteur.connect () essayer: Rows = Connection.execute (SQL, VALEUR) ... enfin: connection.close () return result

    Avec cette approche, les requêtes peuvent être exécutées avec:
  • sql = 'select ...' data = {'user_id': 3} résultats = sql_to_data (sql, données)
  • Cette méthode permet l'utilisation des paramètres nommés tout en maintenant la fonctionnalité principale du code d'origine.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3