У меня есть скрипт, как показано ниже:
import psutil
import sqlite3
DISK = {'1': ['C:\\', 'C:\\', 'NTFS', 'rw,fixed', '75.0Gb', '54.0Gb', '20.0Gb', '72.2%'], '2': ['D:\\', 'D:\\', 'NTFS', 'rw,fixed', '399.0Gb', '208.0Gb', '191.0Gb', '52.2%']}
conn = sqlite3.connect("Test.db")
c = conn.cursor()
result = c.execute("SELECT * FROM clientinfo WHERE IP = ?", ("192.168.10.111",))
if (len(result.fetchall()) > 0):
for x in DISK :
c.execute("UPDATE disk SET Device = ?, 'Mount Point' = ?, 'fstyle' = ?, 'opts' = ?, 'total' = ?, 'used' = ?, 'free' = ?, 'percent' = ? WHERE Client_IP = ?", (DISK[x][0], DISK[x][1], DISK[x][2], DISK[x][3], DISK[x][4], DISK[x][5], DISK[x][6], DISK[x][7], "192.168.10.111"))
else :
for x in DISK :
c.execute("INSERT INTO disk('Client_IP', 'Device', 'Mount Point', 'fstyle', 'opts', 'total', 'used', 'free', 'percent') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", ("192.168.10.111", DISK[x][0], DISK[x][1], DISK[x][2], DISK[x][3], DISK[x][4], DISK[x][5], DISK[x][6], DISK[x][7]))
conn.commit()
conn.close()
Скрипт проверит в БД, есть ли запись об IP "192.168.10.111". Если в БД уже есть запись об IP «192.168.10.111», Script обновит данные из dict DISK на табличный диск БД.
Если в базе данных нет записи об IP "192.168.10.111", Script создаст запись для вставки ** DISK "" в базу данных.
Команда INSERT работает хорошо, но команда UPDATE работает не так, как я хочу. После выполнения команды INSERT в таблице диск у меня будет две записи о диске C и диске D с одинаковым значением столбца Client_IP (192.168.10.111).
После ОБНОВЛЕНИЯ две записи IP "192.168.10.111" получают одинаковое значение в каждом столбце, что очень неправильно. Одна запись должна содержать информацию о диске C, а другая запись - информацию о диске D.
Как я могу заставить ОБНОВЛЕНИЕ работать правильно? длина dict DISK зависит от того, сколько на компьютере установлено подключенных устройств. Поэтому мне нужно использовать цикл для ОБНОВЛЕНИЯ, но не статическое ОБНОВЛЕНИЕ.
Скажите, пожалуйста, как это исправить,
Большое спасибо,
Фрэнсис