Maison > développement back-end > Tutoriel Python > Comment imprimer des requêtes SQL dans SQLAlchemy avec des valeurs réelles ?

Comment imprimer des requêtes SQL dans SQLAlchemy avec des valeurs réelles ?

Mary-Kate Olsen
Libérer: 2024-10-18 13:24:30
original
1048 Les gens l'ont consulté

How to Print SQL Queries in SQLAlchemy with Actual Values?

Récupération de requêtes SQL dans SQLAlchemy avec des valeurs réelles

Lors de l'utilisation de SQLAlchemy, il peut être utile d'imprimer les requêtes SQL réelles en cours d'exécution, y compris les valeurs spécifiques utilisées, plutôt que les paramètres de liaison abstraits.

Voici comment y parvenir dans SQLAlchemy :

<code class="python">print(str(statement))</code>
Copier après la connexion

Cette approche simple fonctionne à la fois pour les objets ORM Query et select() ou d'autres types d'instructions. Si vous souhaitez obtenir la requête telle que compilée dans un dialecte ou un moteur spécifique, vous pouvez transmettre les arguments appropriés à compile() :

<code class="python">print(statement.compile(someengine))
print(statement.compile(dialect=postgresql.dialect()))</code>
Copier après la connexion

Lorsque vous utilisez des objets ORM Query, accédez d'abord à l'accesseur .statement pour accédez à la méthode compile() :

<code class="python">statement = query.statement
print(statement.compile(someengine))</code>
Copier après la connexion

Dans les cas où vous devez intégrer des paramètres liés dans la chaîne finale, SQLAlchemy a une prise en charge limitée pour cela. Vous pouvez utiliser l'indicateur 'literal_binds' lors de l'appel de compile() :

<code class="python">print(s.compile(compile_kwargs={"literal_binds": True}))</code>
Copier après la connexion

Cependant, cela ne fonctionne que pour les types simples comme les entiers et les chaînes. Pour les types personnalisés, vous devrez utiliser un TypeDecorator avec une méthode TypeDecorator.process_literal_param pour fournir un formatage personnalisé :

<code class="python">print(
    tab.select().where(tab.c.x > 5).compile(
        compile_kwargs={"literal_binds": True})
)</code>
Copier après la connexion

Cette approche permet le rendu en ligne des types personnalisés dans la chaîne de requête SQL résultante.

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
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