Heim >Datenbank >MySQL-Tutorial >Wie übergebe ich benannte Parameter mit Pandas „read_sql' korrekt an eine PostgreSQL-Datenbank?

Wie übergebe ich benannte Parameter mit Pandas „read_sql' korrekt an eine PostgreSQL-Datenbank?

Susan Sarandon
Susan SarandonOriginal
2025-01-18 07:27:08814Durchsuche

How to Correctly Pass Named Parameters with Pandas `read_sql` to a PostgreSQL Database?

Verwenden Sie Pandas read_sql, um SQL-Abfrageparameter zu übergeben

Pandas bietet die Funktion read_sql zum Abrufen von Daten aus einer SQL-Datenbank. Diese Funktion ermöglicht die Übergabe von Parametern an die SQL-Abfrage und ermöglicht so eine dynamische Abfrage. Die Methode zur Übergabe von Parametern kann jedoch unterschiedlich sein.

Das Beispiel verwendet die SQLAlchemy-Engine, um eine Verbindung zur PostgreSQL-Datenbank herzustellen. Die Abfrage verwendet BETWEEN %s AND %s als Positionsparameter und kann normal funktionieren.

Die Frage ist jedoch, ob es möglich ist, benannte Parameter mithilfe eines Wörterbuchs zu übergeben, z. B. :dstart und :dfinish. Die Pandas-Dokumentation weist auf diese Möglichkeit hin, in der Praxis schlägt sie jedoch fehl.

Laut der read_sql-Dokumentation kann der params-Parameter eine Liste, ein Tupel oder ein Wörterbuch akzeptieren. Es gibt auch verschiedene Syntaxen zum Übergeben von Werten innerhalb der SQL-Abfrage selbst, darunter ?, :1, :name, %s und %(name)s.

Entscheidend ist, dass die unterstützte Syntax vom verwendeten Datenbanktreiber abhängt. In diesem Fall ist der Treiber höchstwahrscheinlich psycopg2.

Die psycopg2-Dokumentation zeigt, dass benannte Parameter mit dem %(name)s-Stil unterstützt werden und nicht mit dem :name-Stil, der versucht wurde. Daher sollte der folgende Code funktionieren:

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

Das obige ist der detaillierte Inhalt vonWie übergebe ich benannte Parameter mit Pandas „read_sql' korrekt an eine PostgreSQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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