sqlite3.InterfaceError: Ошибка привязки параметра 2 - возможно, неподдерживаемый тип.
Получение этой ошибки, поскольку dict_keys
не может быть сохранено в столбце таблицы Opened_ports
.
Код в порядке для части SQL, это формат отображения dict_keys
dict_keys([53, 80, 111, 443])
, которые не сохраняются.
Я пытался ns[ip_addr]['tcp'].keys().list()
не работал говорит, dict_keys
не имеет атрибута list()
.
def db(*args):
with sqlite3.connect('Test.db') as db:
cursor = db.cursor()
ns, ip_addr, ports = args
cursor.execute('''
CREATE TABLE IF NOT EXISTS Scaninfo(
scanID INTEGER PRIMARY KEY,
ip_address VARCHAR(40) NOT NULL,
scanned_ports VARCHAR(100) NOT NULL,
Opened_ports VARCHAR(100),
Hostname VARCHAR(100) NOT NULL,
ipaddress_state VARCHAR(100) NOT NULL);
''')
cursor.execute("insert into Scaninfo (ip_address, scanned_ports, Opened_ports ,Hostname, ipaddress_state) values (?, ?, ?, ?, ?)",
(ip_addr, ports, ns[ip_addr]['tcp'].keys(), ns[ip_addr].hostname(), ns[ip_addr].state() ))
db.commit()
def Report_csv():
db_name = 'Test.db'
engine = create_engine('sqlite:///' + db_name)
df = pd.read_sql_table('Scaninfo', engine)
df.to_csv('test.csv')
Report_csv()