sqlite3.InterfaceError: Ошибка привязки параметра 2 - возможно, неподдерживаемый тип. Nmap открытые порты печати значение не хранится в таблице SQL дает ошибку - PullRequest
0 голосов
/ 09 мая 2019

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()

1 Ответ

0 голосов
/ 10 мая 2019

Я добавил это в def db ()

    for proto in ns[ip_addr].all_protocols():

    lport = ns[ip_addr][proto].keys()

    sorted(lport)
    port2 = ','
    port1= port2.join(str(port) for port in lport)

    (ip_addr, ports, port1, ns[ip_addr].hostname(), ns[ip_addr].state() ))

теперь работает

...