diff options
Diffstat (limited to 'yr2pgsql.py')
-rwxr-xr-x | yr2pgsql.py | 54 |
1 files changed, 13 insertions, 41 deletions
diff --git a/yr2pgsql.py b/yr2pgsql.py index 28bb06e..9c3ae5e 100755 --- a/yr2pgsql.py +++ b/yr2pgsql.py @@ -1,11 +1,12 @@ -#!/bin/python3 +#!/usr/bin/env python3 +''' Get weatherdata from yr.no ''' import os import sys -import json -import psycopg2 import requests +from common import dbi + lat = str(os.environ['el_yr_lat']) lon = str(os.environ['el_yr_lon']) @@ -38,10 +39,6 @@ except Exception as e: data = response.json() - - - - ### insert data into database values = [] @@ -49,38 +46,13 @@ for item in data["properties"]["timeseries"]: details = item["data"]["instant"]["details"] values.append((item["time"],details["air_temperature"],details["air_pressure_at_sea_level"],details["cloud_area_fraction"],details["relative_humidity"],details["wind_from_direction"],details["wind_speed"])) -# connect to database -conn = psycopg2.connect(database=pg_db, host=pg_host) -cur = conn.cursor() - -# count rows before we start -cur.execute("SELECT COUNT(*) FROM " + pg_table) -before = cur.fetchone() - -# insert data -try: - cur.executemany("INSERT INTO " + pg_table + """ VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT (time) DO UPDATE SET - air_temperature=EXCLUDED.air_temperature, - air_pressure_at_sea_level=EXCLUDED.air_pressure_at_sea_level, - cloud_area_fraction=EXCLUDED.cloud_area_fraction, - relative_humidity=EXCLUDED.relative_humidity, - wind_from_direction=EXCLUDED.wind_from_direction, - wind_speed=EXCLUDED.wind_speed, - updated=now() - """, values) - conn.commit() -except Exception as e: - conn.rollback() - raise e - -# count rows after we finnish -cur.execute("SELECT COUNT(*) FROM " + pg_table) -after = cur.fetchone() - -# count *new* rows -newRows = after[0] - before[0] - -# close connection -conn.close() +sql = "INSERT INTO " + pg_table + """ VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT (time) DO UPDATE SET + air_temperature=EXCLUDED.air_temperature, + air_pressure_at_sea_level=EXCLUDED.air_pressure_at_sea_level, + cloud_area_fraction=EXCLUDED.cloud_area_fraction, + relative_humidity=EXCLUDED.relative_humidity, + wind_from_direction=EXCLUDED.wind_from_direction, + wind_speed=EXCLUDED.wind_speed, + updated=now()""" -print("Successfully inserted " + str(newRows) + " records into the database. Might have updated a bunch more.") +dbi(sql, values, verbose=True) |