2015-06-11 3 views
0

Я занят небольшим проектом, который отслеживает MAC-адреса в определенных сетях. Все работает отлично, за исключением случаев, когда я просматриваю DB (SQLite3) для MAC-адреса, пойманного pcapy в python2.7.Python SQLite3 Mac Адрес с поиском двоеточий

Вот код Def в коде.

def db_check(_loc, _mac): 
    con = lite.connect('database.db') 
    con.text_factory = str 

    cur = con.cursor() 
    cur.execute("SELECT * FROM "+_loc+" WHERE mac_addr=?", (_mac,)) 
    # _loc = Tablename 
    # _mac = variable with mac address 
    # mac_addr = column name in sqlite3 
    # MAC Address format xx:xx:xx:xx:xx 

    _data = cur.fetchall() 

    if len(_data)==0: 
     print('There is no mac %s'%_mac) 
    else: 
     print('Component %s found with rowids %s'%(_mac,','.join(map(str,zip(*_data)[0])))) 

Я хочу, чтобы захватить номер строки в строке, где был замечен адрес Mac. Но когда я печатаю fetchall(), я получаю только [] в качестве вывода.

Когда я запускаю sql-запрос в sqlite, я получаю всю строку, как ожидалось.

Может ли кто-нибудь дать некоторые указания, пожалуйста?

+0

Итак, что же означает 'data'? Вы называли 'cur.fetchall()' только один или два раза? –

+0

cur.fetchall() запускается только один раз. данные не содержат ничего, это пустой список [] –

+0

Как мне отобразить номер строки для дальнейшей обработки? –

ответ

0

Хорошо, мне удалось получить результат, который я хотел.

"SELECT mac_addr, timestamp, (SELECT COUNT(*) FROM mytblname AS t2 WHERE t2.mac_addr <= t1.mac_addr) AS row_Num FROM mytblname AS t1 ORDER BY timestamp, mac_addr;" 

Это дало мне требуемое количество строк.

Смежные вопросы