aboutsummaryrefslogtreecommitdiffstats
path: root/yr2pgsql.py
diff options
context:
space:
mode:
Diffstat (limited to 'yr2pgsql.py')
-rwxr-xr-xyr2pgsql.py54
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)