Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mendapatkan Pertanyaan SQL Sebenar dalam SQLAlchemy?

Bagaimana untuk Mendapatkan Pertanyaan SQL Sebenar dalam SQLAlchemy?

Patricia Arquette
Lepaskan: 2024-10-18 13:26:02
asal
777 orang telah melayarinya

How to Obtain the True SQL Query in SQLAlchemy?

SQLAlchemy: Membongkar Pertanyaan Sebenar

Apabila bekerja dengan SQLAlchemy, ia boleh menjadi berharga untuk memeriksa pertanyaan SQL sebenar yang sedang dilaksanakan. Walaupun SQLAlchemy biasanya bergantung pada parameter bind, terdapat cara untuk menjana pernyataan SQL yang sepadan, termasuk nilai sebenar.

Penyelesaian Umum

Dalam kebanyakan kes, anda boleh dengan mudah dapatkan perwakilan rentetan SQL bagi pernyataan atau pertanyaan SQLAlchemy:

<code class="python">import sqlalchemy as sa
print(str(statement))</code>
Salin selepas log masuk

Ini berfungsi untuk kedua-dua Pertanyaan ORM dan pilih() atau pernyataan lain. Jika perlu, anda boleh menyusun pernyataan itu kepada dialek atau enjin tertentu:

<code class="python">print(statement.compile(someengine))</code>
Salin selepas log masuk

atau tanpa menyatakan enjin:

<code class="python">from sqlalchemy.dialects import postgresql
print(statement.compile(dialect=postgresql.dialect()))</code>
Salin selepas log masuk

Parameter Terikat Sebaris

Untuk memasukkan nilai sebenar dan bukannya parameter ikatan dalam rentetan SQL, SQLAlchemy menyediakan sokongan terhad melalui bendera 'literal_binds' dalam compile_kwargs:

<code class="python">from sqlalchemy import table, column, select
t = table('t', column('x'))
s = select([t]).where(t.c.x == 5)
print(s.compile(compile_kwargs={"literal_binds": True}))</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini hanya berfungsi untuk jenis asas dan mungkin tidak mengendalikan parameter ikatan tanpa nilai yang telah ditetapkan. Untuk jenis tersuai, anda boleh melaksanakan TypeDecorator dengan kaedah process_literal_param:

<code class="python">class MyFancyType(TypeDecorator):
    def process_literal_param(self, value, dialect):
        return "my_fancy_formatting(%s)" % value</code>
Salin selepas log masuk

Ini membolehkan anda menyesuaikan pemaparan nilai berdasarkan keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Pertanyaan SQL Sebenar dalam SQLAlchemy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan