Heim > Backend-Entwicklung > Python-Tutorial > Wie drucke ich SQL-Abfragen in SQLAlchemy mit tatsächlichen Werten?

Wie drucke ich SQL-Abfragen in SQLAlchemy mit tatsächlichen Werten?

Mary-Kate Olsen
Freigeben: 2024-10-18 13:24:30
Original
1048 Leute haben es durchsucht

How to Print SQL Queries in SQLAlchemy with Actual Values?

SQL-Abfragen in SQLAlchemy mit tatsächlichen Werten abrufen

Bei der Verwendung von SQLAlchemy kann es nützlich sein, die tatsächlich ausgeführten SQL-Abfragen auszudrucken, einschließlich die spezifischen Werte, die verwendet werden, und nicht die abstrakten Bindungsparameter.

So erreichen Sie dies in SQLAlchemy:

<code class="python">print(str(statement))</code>
Nach dem Login kopieren

Dieser einfache Ansatz funktioniert sowohl für ORM-Abfrageobjekte als auch für select() oder andere Anweisungstypen. Wenn Sie die Abfrage so erhalten möchten, wie sie für einen bestimmten Dialekt oder eine bestimmte Engine kompiliert wurde, können Sie die entsprechenden Argumente an „compile()“ übergeben:

<code class="python">print(statement.compile(someengine))
print(statement.compile(dialect=postgresql.dialect()))</code>
Nach dem Login kopieren

Wenn Sie ORM-Abfrageobjekte verwenden, greifen Sie zunächst auf den .statement-Accessor zu Holen Sie sich die Methode „compile()“:

<code class="python">statement = query.statement
print(statement.compile(someengine))</code>
Nach dem Login kopieren

In Fällen, in denen Sie gebundene Parameter in die endgültige Zeichenfolge einfügen müssen, bietet SQLAlchemy hierfür nur begrenzte Unterstützung. Sie können das Flag „literal_binds“ verwenden, wenn Sie „compile()“ aufrufen:

<code class="python">print(s.compile(compile_kwargs={"literal_binds": True}))</code>
Nach dem Login kopieren

Dies funktioniert jedoch nur für einfache Typen wie Ganzzahlen und Strings. Für benutzerdefinierte Typen müssen Sie einen TypeDecorator mit einer TypeDecorator.process_literal_param-Methode verwenden, um eine benutzerdefinierte Formatierung bereitzustellen:

<code class="python">print(
    tab.select().where(tab.c.x > 5).compile(
        compile_kwargs={"literal_binds": True})
)</code>
Nach dem Login kopieren

Dieser Ansatz ermöglicht das Inline-Rendering benutzerdefinierter Typen in der resultierenden SQL-Abfragezeichenfolge.

Das obige ist der detaillierte Inhalt vonWie drucke ich SQL-Abfragen in SQLAlchemy mit tatsächlichen Werten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage