from datetime import datetimefrom influxdb import InfluxDBClientfrom sqlalchemy import create_engine, textengine = create_engine('mysql+pymysql://isyscore:Isysc0re@172.16.200.218:23306/bap_data_warehouse?charset=utf8&connect_timeout=5')client = InfluxDBClient('172.16.200.218', 28086, database='isc_dmc')now = datetime.now()def minute(t):if 0 <= t.minute < 15:return 0elif 15 <= t.minute < 30:return 15elif 30 <= t.minute < 45:return 30elif 45 <= t.minute < 60:return 45start = datetime(now.year, now.month, now.day)current = datetime(now.year, now.month, now.day, now.hour, minute(now))total_consume = 0try:device_lst = ['BPD-DB-22', 'BPD-DB-19', 'BPD-DB-18', 'BPD-DB-17', 'BPD-DB-16', 'BPD-DB-8', 'BPD-DB-7', 'BPD-DB-4']for i in device_lst:start_sql = "select value from device_attr_double where devId='{}' and identifier = 'EPI' and time >= {} order by time asc limit 1".format(i, int(start.timestamp() * 1000000000))end_sql = "select value from device_attr_double where devId='{}' and identifier = 'EPI' and time >= {} order by time desc limit 1".format(i, int(start.timestamp() * 1000000000))zero_lst = [float(p['value']) for p in client.query(start_sql).get_points()]curr_lst = [float(p['value']) for p in client.query(end_sql).get_points()]if len(zero_lst) > 0 and len(curr_lst) > 0:accum = curr_lst[0] - zero_lst[0]else:accum = 0total_consume += accumengine.execute('''create table if not exists ST_ELEC_CONSUME(create_time datetime primary key not null,total_consume double null)''')v = {'create_time': current, 'total_consume': round(total_consume, 2)}table_name = "ST_ELEC_CONSUME"ks = ','.join(['`{}`'.format(k) for k in v.keys()])vs = ','.join([':{}'.format(v) for v in v.keys()])stmt = text("""replace into {} ({}) values ({})""".format(table_name, ks, vs))# engine.execute(stmt, v)except Exception as e:raise efinally:client.close()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。