Maison >base de données >tutoriel mysql >Comment puis-je révéler le SQL brut et compilé à partir d'une requête SQLAlchemy ?
Révéler le SQL brut et compilé derrière une expression SQLAlchemy
Lorsque vous travaillez avec un objet de requête SQLAlchemy, il peut être souhaitable d'obtenir le réel , instruction SQL compilée pour obtenir des informations sur le fonctionnement de la base de données sous-jacente. Cependant, récupérer cette requête brute avec des paramètres entièrement liés peut s'avérer difficile.
Une approche consiste à exploiter l'argument literal_binds dans compile_kwargs lors de la compilation de l'instruction de requête. Comme illustré ci-dessous :
print(q.statement.compile(compile_kwargs={"literal_binds": True}))
Cette méthode génère la requête SQL compilée avec des paramètres directement insérés, supprimant ainsi le besoin d'espaces réservés tels que %s. Cependant, il est crucial de noter que cette technique est limitée aux types simples comme les entiers et les chaînes. Si un bindparam() sans valeur prédéfinie est utilisé, il ne sera pas inclus dans la sortie.
La documentation souligne la prudence lors de l'utilisation de cette approche avec une entrée non fiable. Il déconseille d'utiliser cette technique avec les données fournies par l'utilisateur, car les mécanismes de SQLAlchemy pour forcer les valeurs Python en chaînes SQL manquent de sécurité contre les entrées non fiables. Au lieu de cela, il préconise fortement l'utilisation de paramètres liés pour l'invocation par programme d'instructions SQL non DDL.
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!