sysinfo_to_sqlite

# sysinfo_tosqlite.py
from datetime import datetime
import os
# 导入sqlite3 模块
import sqlite3
from apscheduler.schedulers.blocking import BlockingScheduler
# 从sysinfo_bypsutil.py文件导入report()函数
from sysinfo_bypsutil import gather_monitor_data

db_file = "sysinfo.db3"
'''定义数据库表'''
def db_define():
    # 连接数据库
    con = sqlite3.connect(db_file, timeout=10, check_same_thread=False)
    # 创建游标对象
    cur = con.cursor()
    # 创建表(如果存在该表就不创建)
    cur.execute('CREATE TABLE IF NOT EXISTS  sysinfo (id INTEGER PRIMARY KEY, cpu_count INT, cpu_percent REAL, mem_total TEXT, mem_used TEXT, mem_free TEXT, mem_percent REAL, disk_total TEXT,disk_used TEXT,disk_free TEXT,disk_percent REAL,disk_read TEXT,disk_write TEXT,net_sent TEXT,net_recv TEXT,mon_time TEXT)')
    con.commit()
    cur.close()
    con.close()

'''定义要执行的任务'''
def monjob():
    print('监测时间: %s' % datetime.now())
    data = gather_monitor_data()
    data['mon_time']=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    field_names = ','.join(data.keys())           # 从字典数据中获取字段名并转换为字符串
    field_values = ''                                # 定义字段值变量
    # 从字典数据中获取字段值并连接成字符串
    for index, item in enumerate(data.values()):
        if isinstance(item, str):
            item = '\'' + item + '\''
        else:
            item = str(item)
        if index>0:
            field_values = field_values + "," + item
        else:
            field_values = field_values + item
    # 插入记录语句
    statement = "INSERT INTO sysinfo (" + field_names + ") VALUES("  + field_values +")"
    con = sqlite3.connect(db_file, timeout=10, check_same_thread=False)
    cur = con.cursor()
    cur.execute(statement)             # 执行插入操作
    con.commit()
    cur.close()
    con.close()

if __name__ == '__main__':
    db_define()                       # 创建数据库和表
    scheduler = BlockingScheduler()
    scheduler.add_job(monjob, 'interval', minutes=2)
    # 给出强制退出的组合键,兼顾Linux和Windows平台
    print('按 Ctrl+{0} 键退出'.format('Break' if os.name == 'nt' else 'C'))
    # 先运行一次定义的任务,再启动调度器
    monjob()
    try:
        scheduler.start()
    except (KeyboardInterrupt, SystemExit):
        print('已退出!')
        exit()

# sysinfo_from_sqlite.py
import sqlite3
db_file="sysinfo.db3"

con = sqlite3.connect(db_file, timeout=10, check_same_thread=False)
cur = con.cursor()
# 执行查询语句
cur.execute('SELECT * FROM sysinfo')
values = cur.fetchall()
cur.close()
con.close()
# 显示所有记录
for rec in values:
   print(rec)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容