我有Python2.7,我有返回温度信息的天气脚本,我想把这个脚本实现到PostgreSQL中。我总是得到这个错误:DETAIL: SyntaxError: invalid syntax (<string>, line 10)
代码:
CREATE OR REPLACE FUNCTION GetWeather(lon float, lat float)
RETURNS float
AS $$
import urllib2
import simplejson as json
data = urllib2.urlopen(
"http://api.openweathermap.org/data/2.1/find/station?lat=%s&lon=%s&cnt=1"% (lat, lon))
js_data = json.load(data)
if js_data['cod'] == '200':
if int(js_data['cnt'])>0:
station = js_data['list'][0]
print 'Data from weather station %s' %station['name']
if 'main' in station:
if 'temp' in station['main']:
temperature = station['main']['temp'] - 273.15
else:temperature = None
else:temperature = None
return temperature
$$ LANGUAGE plpythonu;
我也试过这个版本,但没用
CREATE OR REPLACE FUNCTION GetWeather(lon float, lat float)
RETURNS float
AS $$
import urllib2
import simplejson as json
def get_temp(lat, lon):
data = urllib2.urlopen(
"http://api.openweathermap.org/data/2.1/find/station?lat=%s&lon=%s&cnt=1"% (lat, lon))
js_data = json.load(data)
try:
return js_data['list'][0]['main']['temp']
except (KeyError, IndexError):
return None
$$ LANGUAGE plpythonu;
你的数据结构错了(是的,缩进很重要…) 不管怎样,这里是给你的解决方案:
输出:
我只有
plpython3u
,但是它也应该可以在Python 2.7中使用plpythonu
(只需更改下面的部分而不做其他更改)。注意上面的是一个4-space indent convention (PEP 8)。如果您是Python新手,我建议您通过一些教程来了解缩进的语法和用法。
相关问题 更多 >
编程相关推荐