0

我已经尝试了很多不同的变体,并且只使用变量的直字符串进行调试,但我相信这与数据类型有关?这应该是一个快速的原型,但已经吃了一个下午!

#! 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.
4

2 回答 2

0

我做了一个解决方法 - 它不是那么优雅,但我导入 simplejson 并使用 simplejson.dumps(variable) 的结果将值插入为 json。

于 2012-05-20T21:19:13.250 回答
0

您确实需要阅读psutil 的文档

psutil.disk_usage(路径)

返回有关给定路径的磁盘使用统计信息作为命名元组,包括以字节表示的总空间、已用空间和可用空间以及使用百分比。如果路径不存在,则会引发 OSError。请参阅提供示例用法的示例/disk_usage.py 脚本。

>>> psutil.disk_usage('/')
usage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)

现在由您决定要插入数据库的值。

于 2012-05-20T12:17:23.863 回答