2017-04-11 1 views
1

Ich habe einen Datenrahmen, die aus einer Spalte von Werten besteht, und ich will es als Parameter übergeben Sie die folgende SQL-Abfrage auszuführen:Wie übergebe ich einen Datenrahmen als Parameter an eine SQL-Abfrage in Python?

query = "SELECT ValueDate, Value"\ 
     "FROM Table "\ 
     "WHERE [ID] in (?) " 

Also habe ich versucht (unter so vielen anderen Dingen) die folgende:

 df = pd.read_sql_query(query, conn, params=[ df['ID'].values ]) 
     df = pd.read_sql_query(query, conn, params=[ df['ID'].tolist ]) 
     df = pd.read_sql_query(query, conn, params=[ list(df['ID'].values) ]) 
     ... 

Was ist der richtige Weg, um die Datenrahmenwerte zu übergeben?

Hinweis: Ich verwende Microsoft SQL Server, so dass die Abfrage wie ich formatiert werden muss.

+0

Nachdem Sie nun sql-server angegeben haben, könnten Tabellenwerte die richtige Wahl sein. –

Antwort

1

Erhält dies, was Sie brauchen?

import pandas as pd 

your_column = pd.Series([1,2,3,4,5,6,7,8,9]) 

query = "SELECT ValueDate, Value"\ 
     "FROM Table "\ 
     "WHERE [ID] in {}".format(tuple(your_column)) 

print(query) 
# 'SELECT ValueDate, ValueFROM Table WHERE [ID] in (1, 2, 3, 4, 5, 6, 7, 8, 9)' 

Dann sollten Sie in der Lage sein, ohne weitere Parameter abzufragen.

0
params = tuple(df['ID'].values) 
sql = "SELECT COUNT(*) FROM foobar WHERE id IN (%s)" % (",".join(["?"]*len(params)),) 
cursor.execute(sql, params) 
+0

Vielen Dank, aber ich habe vergessen zu sagen, dass ich Microsoft SQL Server verwende, so dass die Abfrage wie in meiner Frage formatiert werden muss. – Arthurim

+0

Es ist das gleiche ... – user2722968

+1

Erwägen Sie, eine Beschreibung hinzuzufügen, wie der Code, den Sie gepostet haben, funktioniert, es wird Benutzern hilfreich sein, die diesen Beitrag in der Zukunft besuchen. –

Verwandte Themen