我已經嘗試了很多不同的變體,只用直線字符串調試變量,但我相信這與數據類型有關?這應該是一個快速原型,但已經吃了一個下午!使用Python將非常規數據插入到Sqite3中
#! 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.
你花時間看看你的數據了嗎? –
你的問題是'psutil.cpu_percent()'返回一個'list',它不是SQLite支持的數據類型。 –
是的Ignacio Vazquez-Abrams多數民衆贊成我認爲的第一件事 - 它絕對非傳統的數據 - 我試過使用不同的數據類型和參數樣式沒有成功。 – rebelbass