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!