Maison > base de données > tutoriel mysql > Comment puis-je récupérer le SQL brut compilé à partir d'une expression SQLAlchemy ?

Comment puis-je récupérer le SQL brut compilé à partir d'une expression SQLAlchemy ?

Susan Sarandon
Libérer: 2025-01-07 10:56:41
original
290 Les gens l'ont consulté

How Can I Retrieve the Raw Compiled SQL from a SQLAlchemy Expression?

Récupération du SQL brut et compilé à partir d'expressions SQLAlchemy

Dans SQLAlchemy, obtenir la requête SQL brute et compilée à partir d'un objet d'expression peut être un défi . Bien que l'API d'expression offre une interface pratique, elle masque le code SQL sous-jacent.

Vous avez du mal à localiser les paramètres

Vous avez inspecté le dictionnaire query._params mais vous avez trouvé il est vide, malgré l'exécution réussie de la requête. En effet, SQLAlchemy conserve intentionnellement les paramètres encapsulés dans l'objet de requête. Ce faisant, il garantit la compatibilité avec diverses API DB.

Utilisation de la liaison littérale

Cependant, la documentation SQLAlchemy propose une solution de contournement grâce à l'utilisation de literal_binds :

print(q.statement.compile(compile_kwargs={"literal_binds": True}))
Copier après la connexion

Cette approche vous permet d'imprimer l'instruction de requête avec ses paramètres inclus. Cependant, il ne convient qu'aux types de base (par exemple, entiers, chaînes) et ne prend pas en charge bindparam() sans valeur prédéfinie.

Avertissement de sécurité

La documentation déconseille fortement d'utiliser cette technique avec une entrée non fiable. Les mécanismes de coercition de type de SQLAlchemy ne sont pas infaillibles et pourraient conduire à des failles de sécurité.

Conclusion

Bien qu'il ne soit pas directement exposé par défaut, le SQL brut et compilé peut être récupéré à partir de SQLAlchemy. expressions utilisant l’argument de mot-clé literal_binds. Cependant, il est crucial de faire preuve de prudence lorsque vous travaillez avec des données non fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal