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

あなたは本当にpsutilのドキュメントを読む必要があります。

psutil.disk_usage(path)

指定されたパスに関するディスク使用統計を、バイト単位で表された合計、使用済み、および空き領域と使用率を含む名前付きタプルとして返します。パスが存在しない場合、OSErrorが発生します。使用例を提供するexamples/disk_usage.pyスクリプトを参照してください。

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

ここで、データベースに挿入する値を決定するのはあなた次第です。

于 2012-05-20T12:17:23.863 に答える
0

私は回避策を作成しました-それはそれほどエレガントではありませんが、simplejson をインポートし、simplejson.dumps(variable) の結果を使用して値を json として挿入します。

于 2012-05-20T21:19:13.250 に答える