我嘗試使用變數將資料放入表中,如下面的代碼所示。當我運行這段代碼時,我收到以下錯誤:
我想要代碼做的是,從我提供給函式 insert_data 的引數中獲取資料。然后使用通配符問號符號。獲得將變數用作資料的選項。不太確定這是否是最合適的方式。但它確實適用于其他場合。我只是不明白為什么它在這段代碼中不起作用。
Traceback (most recent call last):
File "{path}", line 65, in <module>
insert_data()
File "{path}", line 56, in insert_data
query ("INSERT INTO computers (name, os, mac_addr) VALUES "
File "{path}", line 8, in query
cursor.execute(query, args)
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
我的代碼
import cgi
import sqlite3
from os import path, environ
def query(query, *args):
db = sqlite3.connect(database)
cursor = db.cursor()
cursor.execute(query, args)
resultaat = cursor.fetchall()
db.commit()
db.close()
return resultaat
def database_create():
if path.isfile(database) != True:
query("CREATE TABLE 'computers' ('name' TEXT, 'os' TEXT, 'mac_addr' TEXT,"
"'create_date' timestamp DEFAULT current_timestamp)")
query("CREATE TABLE 'data' ('computer_id' integer, 'mem_usage' float,"
"'cpu_usage' float, 'total_size' float, 'used_size' float, 'free_size' float,"
"'create_date' timestamp DEFAULT current_timestamp)")
query("CREATE TABLE 'grafieken' ('name' TEXT, 'legend' TEXT)")
query("CREATE TABLE 'gebruikers'('u_name' TEXT, 'p_word' TEXT)")
query("INSERT INTO 'gebruikers' (u_name, p_word) VALUES ('beheerder',"
"'695badbd075fdacd8638a600712f9aec74dd85b6ae61f7ab7f0f45e438196bf0aac117102d328e3d4e92fd5fc78f593a50875f900a7fe59f5d463bbf35af245c3b605ec3b6f91cbec7452801ca5ca95ebf00b248e73d07b9934d25ab21b6943a83d1944450854ef05044be01ff0d3b72b158209a70a28c3e063ec6a7f806d610')")
query("INSERT INTO grafieken VALUES ('Totale hardeschijf ruimte', 'Ruimte (GB), hoger is beter')")
query("INSERT INTO grafieken VALUES ('Beschikbare hardeschijf ruimte', 'Ruimte (GB), hoger is beter')")
query("INSERT INTO grafieken VALUES ('Gebruikte hardeschijf ruimte', 'Ruimte (GB), lager is beter')")
query("INSERT INTO grafieken VALUES ('Geheugenverbruik', 'Geheugen (%), lager is beter')")
query("INSERT INTO grafieken VALUES ('CPU-verbruik', 'Processor (%), lager is beter')")
print ('done')
elif path.isfile(database) == True:
print ('DB already exists')
else:
print('failed')
def insert_data():
try:
import psutil
except ImportError:
print('no psutil installed')
exit(1)
import platform
import uuid
diskspace = psutil.disk_usage('/')
spacetoGB = [diskspace[0] // (2 ** 30), diskspace[1] // (2 ** 30), diskspace[2] // (2 ** 30)] # Total, used, free
name = platform.uname()[1],
mac_addr = '2x' % uuid.getnode(), # https://stackoverflow.com/questions/13864608/get-mac-address-in-python-and-append-to-string
#totalsize = spacetoGB[0],
#usedsize = spacetoGB[1],
#freesize = spacetoGB[2],
os = platform.system() " " platform.release(),
# memusage = psutil.virtual_memory().percent,
# cpu_usage = psutil.cpu_percent(interval=1)
query ("INSERT INTO computers (name, os, mac_addr) VALUES "
"(?,?,?)", *(name, os, mac_addr,))
data = 'Record added'
print (data)
#return data
database = "tester.db"
database_create()
insert_data()
uj5u.com熱心網友回復:
,終止集合陳述句(例如name = platform.uname()[1],)的逗號 ( )將變數轉換為元組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/405701.html
標籤:
