2016-10-27 94 views
1

所以我使用的是PyDrill做一個SQL查詢:錯誤在Python請求:ValueError異常

這是相關代碼:

yelp_reviews = drill.query(''' 
    SELECT sum(case when t.attributes.Parking.garage='true' then 1 else 0 end) as garage, 
    sum(case when t.attributes.Parking.street='true' then 1 else 0 end) as street, 
    sum(case when t.attributes.Parking.validated='true' then 1 else 0 end) as validated, 
    sum(case when t.attributes.Parking.valet='true' then 1 else 0 end) as valet, 
    sum(case when t.attributes.Parking.lot='true' then 1 else 0 end) as lot FROM `mongo.274_BI`.`yelp_dataset`t 
    where t.city=? 
''','Las Vegas') 

在執行這一點,我得到以下錯誤:

ValueError: Timeout value connect was Las Vegas, but it must be an int or float. 

我更新使用

pip install -U requests; 
請求

雖然錯誤仍然存​​在。請幫忙。

回答

1

drill.query正在等待第二個參數的超時值。你傳入的字符串「拉斯維加斯」不是一個數字(即intfloat)。

根據documentationquery接受sqltimeout這兩個參數。您的SQL應該作爲第一個參數傳入,並且超時應該作爲可選的第二個參數傳入。

仔細觀察後,您希望「Las Vegas」能夠安全地插入到sql中。似乎PyDrill不支持這一點。解決辦法是隻要將「拉斯維加斯」添加到實際的查詢中,只要sql不是來自不可信來源就可以工作。如果是這樣,我會建議用PyDrill開啓一個問題,因爲這應該是IMO支持的。