73 lines
1.8 KiB
Python
73 lines
1.8 KiB
Python
#! env/bin/python3
|
|
|
|
# import the psycopg2 database adapter for PostgreSQL
|
|
import psycopg2
|
|
from psycopg2.extras import Json
|
|
import json
|
|
import sys
|
|
|
|
def connect_db(db: str,host: str,user: str,passwd: str):
|
|
try:
|
|
# declare a new PostgreSQL connection object
|
|
conn = psycopg2.connect(
|
|
dbname = db,
|
|
user = user,
|
|
host = host,
|
|
password = passwd,
|
|
# attempt to connect for 3 seconds then raise exception
|
|
connect_timeout = 3
|
|
)
|
|
|
|
except (Exception, psycopg2.Error) as err:
|
|
#print ("\npsycopg2 connect error:", err)
|
|
conn = None
|
|
return conn
|
|
|
|
def get_db_creds(file: str):
|
|
with open(file) as cred_file:
|
|
creds = json.load(cred_file)
|
|
return creds
|
|
|
|
def insert_data(conn, data):
|
|
|
|
# insert a new vendor into the vendors table
|
|
sql = """
|
|
INSERT INTO
|
|
air(datetime, temperature, humidity)
|
|
VALUES
|
|
(%s, %s, %s)
|
|
"""
|
|
|
|
try:
|
|
# open cursor on our db connection
|
|
cur = conn.cursor()
|
|
|
|
# execute the INSERT statement
|
|
data = (data["datetime"], data["temperature"], data["humidity"])
|
|
cur.execute(sql,data)
|
|
|
|
# commit the changes to the database
|
|
conn.commit()
|
|
|
|
# close communication with the database
|
|
cur.close()
|
|
|
|
except (Exception, psycopg2.DatabaseError) as error:
|
|
print(error)
|
|
|
|
finally:
|
|
if conn is not None:
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
data = {
|
|
"datetime": "2021-10-23 01:58:08.205911",
|
|
"temperature": "73.4",
|
|
"humidity": "49.2"
|
|
}
|
|
|
|
creds = get_db_creds("./.creds.json")
|
|
|
|
conn = connect_db(creds["db"], creds["host"], creds["user"], creds["passwd"])
|
|
|
|
insert_data(conn, data) |