Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meluluskan Parameter Dinamakan dengan Pandas `read_sql` ke Pangkalan Data PostgreSQL?
Gunakan Pandas read_sql untuk menghantar parameter pertanyaan SQL
Panda menyediakan fungsi read_sql
untuk mendapatkan semula data daripada pangkalan data SQL. Fungsi ini membenarkan menghantar parameter kepada pertanyaan SQL, membolehkan pertanyaan dinamik. Walau bagaimanapun, kaedah lulus parameter mungkin berbeza.
Contohnya menggunakan enjin SQLAlchemy untuk menyambung ke pangkalan data PostgreSQL. Pertanyaan menggunakan BETWEEN %s AND %s
sebagai parameter kedudukan dan boleh berfungsi seperti biasa.
Walau bagaimanapun, persoalannya ialah sama ada mungkin untuk lulus parameter bernama menggunakan kamus, seperti :dstart
dan :dfinish
. Dokumentasi Pandas menunjukkan kemungkinan ini, tetapi dalam praktiknya ia gagal.
Menurut dokumentasi read_sql
, parameter params
boleh menerima senarai, tuple atau kamus. Terdapat juga pelbagai sintaks untuk menghantar nilai dalam pertanyaan SQL itu sendiri, termasuk ?
, :1
, :name
, %s
dan %(name)s
.
Yang penting, sintaks yang disokong bergantung pada pemacu pangkalan data yang digunakan. Dalam kes ini, kemungkinan besar pemandu adalah psycopg2.
Dokumentasi psycopg2 menunjukkan bahawa parameter yang dinamakan disokong menggunakan gaya %(name)s
, bukannya gaya :name
yang telah dicuba. Oleh itu, kod berikut sepatutnya berfungsi:
<code class="language-python">df = psql.read_sql(('select "Timestamp","Value" from "MyTable" ' 'where "Timestamp" BETWEEN %(dstart)s AND %(dfinish)s'), db, params={"dstart": datetime(2014, 6, 24, 16, 0), "dfinish": datetime(2014, 6, 24, 17, 0)}, index_col=['Timestamp'])</code>
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Parameter Dinamakan dengan Pandas `read_sql` ke Pangkalan Data PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!