I have python 2.7 and I have weather script which returns temperature infos, I would like to implement this script into PostgreSQL. I always got this error: DETAIL: SyntaxError: invalid syntax (<string>, line 10)
code:
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;
I tried this version too, but its not working
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;
I only have plpython3u
, but it should also work for Python 2.7 using plpythonu
(just change that part of the following and nothing else).
CREATE OR REPLACE FUNCTION GetWeather(lon float, lat float)
RETURNS float AS $$
import sys
if sys.version_info[0] == 2:
from urllib2 import urlopen
else: # Python 3
from urllib.request import urlopen
import json
def get_temp(lon, lat):
data = urlopen(
"http://api.openweathermap.org/data/2.1/find/station?lat=%s&lon=%s&cnt=1"
% (lat, lon))
js_data = json.loads(data.read().decode('utf-8'))
try:
return js_data['list'][0]['main']['temp']
except (KeyError, IndexError):
return None
return get_temp(lon, lat)
$$ LANGUAGE plpython3u;
Note that the above is with a 4-space indent convention (PEP 8). If you are new to Python, I'd recommend going through a few tutorials to understand the syntax and use of indents.