2016-07-08 112 views
-6

我有python下面的需求,我需要在運行時傳遞日期和id。python替換字符串中的佔位符值

query_str="select * from test_table where data_date = '${data_date}' and id = ${id}" 

Where data_date is string column and id is big int column. 

如果我傳遞data_date爲2015-01-01和id爲1,它應該替換下面的參數。

Output : select * from test_table where data_date = '2015-01-01' and id = 1 
+0

這需要[mcve]。 –

回答

3

你實際上是在問叫什麼query parameterization,它必須做正確的依靠你的數據庫驅動程序提供的功能。這樣你可以讓你的驅動程序處理正確的轉義和python到數據庫類型的轉換。

根據驅動程序,佔位符風格可以不同,但​​%s是最常見的:

query_str = """ 
    select * 
    from test_table 
    where data_date = %s and id = %s 
""" 
params = ('2015-01-01', 1) 
cursor.execute(query_str, params) 

其中cursor是你的數據庫連接遊標實例。

+0

此查詢參數化用於執行pyspark SQL。爲此我找不到任何數據庫驅動程序。這就是我尋找使用python函數進行參數化並執行參數化查詢的原因。 –