我已尝试过很多不同的变体和调试,只使用直接字符串作为变量,但我相信这与数据类型有关?这应该是一个快速的原型,但已经吃了一个下午了!
#! usr/bin/ python
import sqlite3
import sys
import psutil
cpu_usage = psutil.cpu_percent()
ram_usage = psutil.phymem_usage()
disk_usage = psutil.disk_usage('/')
network = psutil.network_io_counters(True)
conn = sqlite3.connect('stats.db')
cur = conn.cursor()
cur.execute("CREATE TABLE stats (id INTEGER PRIMARY KEY, cpu TEXT, ram TEXT, disk TEXT, network TEXT, timestamp DATE DEFAULT (datetime('now','localtime')))")
cur.execute("INSERT INTO stats (id, cpu, ram, disk, network, timestamp) VALUES (?, ?, ?, ?, ?, ?)", (None, cpu_usage, ram_usage, disk_usage, network, None))
print(cur.fetchall())
conn.commit()
conn.close()
Traceback (most recent call last):
File "build_db.py", line 15, in <module>
cur.execute("INSERT INTO stats (id, cpu, ram, disk, network, timestamp) VALUES (?, ?, ?, ?, ?, ?)", (None, cpu_usage, ram_usage, disk_usage, network, None))
sqlite3.InterfaceError: Error binding parameter 2 - probably unsupported type.
答案 0 :(得分:0)
您真的需要阅读documentation for psutil。
psutil.disk_usage(路径)
将有关给定路径的磁盘使用情况统计信息作为namedtuple返回 包括以字节加上表示的总空间,已用空间和可用空间 使用百分比。如果path不存在,则引发OSError。看到 examples / disk_usage.py脚本提供了一个示例用法。
>>> psutil.disk_usage('/')
usage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
现在由您决定要将哪个值插入数据库。
答案 1 :(得分:0)
我已经做了一个解决方法 - 它不是那么优雅但我导入simplejson并使用simplejson.dumps(变量)的结果将值插入为json。