12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import sys
- import pymysql
- import json
- import decimal
- import boto3
- import uuid
- import logging
- from datetime import datetime, timedelta
- class DecimalnDateTimeEncoder(json.JSONEncoder):
- def default(self, obj):
- if isinstance(obj, decimal.Decimal) or isinstance(obj, datetime):
- return str(obj)
- return json.JSONEncoder.default(self, obj)
- gurigalmae_host = "121.163.199.101"
- gurigalmae_port = 3306
- gurigalmae_id = "valley"
- gurigalmae_pw = "valley123"
- gurigalmae_dbname = "valleydb"
- def lambda_handler(event, context):
- logger = logging.getLogger()
- logger.setLevel(logging.INFO)
- try:
- conn = pymysql.connect(host=gurigalmae_host, port=gurigalmae_port, user=gurigalmae_id, passwd=gurigalmae_pw, db=gurigalmae_dbname, connect_timeout=5)
- except:
- logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
- sys.exit()
- logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
-
- today = datetime.now()
- yesterday = today - timedelta(days=1)
-
- sql = "SELECT * FROM DAYENERGY WHERE ENERGY_YEAR={} AND ENERGY_MONTH={} AND ENERGY_DAY={}".format(yesterday.year, yesterday.month, yesterday.day)
- with conn.cursor(pymysql.cursors.DictCursor) as cur:
- cur.execute(sql)
- logger.info(sql)
- rows = cur.fetchall()
- data = ""
- for row in rows:
- data += json.dumps(row, cls=DecimalnDateTimeEncoder) + '\n'
- logger.info(row)
- s3=boto3.resource('s3')
- object = s3.Object('hdci-ambt-homenetserver-raw','dev/site_name=gurigalmae/table_name=dayenergy/year={}/month={}/ambt-preden-lambda-migration-dev-{}-{}-{}-{}'.format(yesterday.year, yesterday.month, yesterday.year, yesterday.month, yesterday.day, str(uuid.uuid4())))
- return object.put(Body=data)
|