【发布时间】:2014-03-16 22:09:46
【问题描述】:
我有 python 2.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;
【问题讨论】:
-
前 3 行应该是 Python 的一部分吗?最后一行?因为那不是 Python。
-
如果它是 Python,其余部分也是错误的缩进。
-
是 sql 和 python。代码有什么问题?
-
请在每个
:之后进行中断和缩进,因为它应该在 Python 中完成。您很有可能会发现代码出了什么问题,甚至可能足以让它正常工作。 -
@m.wasowski 我打破了.. 但它仍然无法正常工作
标签: python python-2.7 postgresql-9.1 postgis plpython