2016-04-13 9 views
-1

В основном, что я хочу сделать, это вернуть записи из базы данных на основе ввода пользователя и отобразить записи в виджетах TextBrowser PyQt4.SQLite Select query не дает ошибок, но не отображает результаты.

Это код:

def url_search(self): 
     self.browserUrl.append("Look") \\ for testing reasons, works. 
     items = [] 
     for index in range(self.listUrl.count()): 
      items.append(self.listUrl.item(index)) 
      conn = sqlite3.connect(directory + '\\CyberConan Databases\\CB Database\\Google Chrome\\Chrome Artifacts.db') 
     for kw in items: 
      self.browserUrl.append("it is") \\for testing reasons, works 
      x = str(kw) 
      for row in conn.execute("SELECT * FROM urls WHERE ID LIKE ? OR URL LIKE ? OR Title LIKE ? " 
           "OR Visit_Count LIKE ? OR Typed_Count LIKE ?;", 
           ("'%"+x+"%'", "'%"+x+"%'", "'%"+x+"%'", "'%"+x+"%'", "'%+x+%'")): 
       self.browserUrl.append("working") \\ for testing reasons, does not work 
       self.browserUrl.append(str(row[0])) 
       self.browserUrl.append(str(row[1])) 
       self.browserUrl.append(str(row[2])) 
       self.browserUrl.append(str(row[3])) 
       self.browserUrl.append("working man!") \\ for testing reasons, does not work 
       self.browserUrl.append(str(row[4])) 
       self.browserUrl.append(str(row[5])) 

Таким образом, пользователь будет нажимать на кнопку, и эта функция работает. Единственный выход им получить это:

Look

это

Этот выход происходит каждый раз при нажатии кнопки. Все имена правильны. У меня нет ошибок. В таблице содержится то, что пользователь ищет, поэтому должен быть выход. Обратите внимание, что «it is» появляется для количества kw в элементах.

(Это для дипломного проекта)

+0

у меня нет никакого опыта работы с PyQt, так что я собираюсь игнорировать тот факт, что большое количество синтаксиса недействителен в Python, потому что вы говорите, что он работает без ошибок. Но 'для строки в conn.execute (« SELECT ... »; запросы выполняются через [курсор] (https://docs.python.org/2/library/sqlite3.html), а не соединение. – roganjosh

+0

@roganjosh курсор используется при добавлении или изменении базы данных. Я выбираю из него, поэтому ему не нужен курсор. –

+0

Ну, вы также можете выбрать из базы данных с помощью курсора. Затем вы будете использовать что-то вроде 'cursor.fetchall() 'для получения результата. Поскольку все добавляется в список, но ничего из запроса, возможно, самое лучшее место для начала было бы посмотреть, что возвращается из вашего запроса? – roganjosh

ответ

1

хорошо, так что я узнал, что проблема была.

Во-первых: синтаксический разбор строки в инструкции выбора был выполнен неправильно.

Во-вторых: когда я возвращал элементы из списка, я возвращал их «местоположения», а не сами строки.

Это решаемый код для тех, кто, возможно, столкнется с подобной проблемой:

def url_search(self): 
     items = [] 
     for index in range(self.listUrl.count()): 
       thing = self.listUrl.item(index) 
       items.append(thing.text()) 
     conn = sqlite3.connect(directory + '\\CyberConan Databases\\CB Database\\Google Chrome\\Chrome Artifacts.db') 
     for kw in items: 
       x = str(kw) 
       for row in conn.execute("SELECT * FROM urls WHERE ID LIKE ? OR URL LIKE ? OR Title LIKE ? " 
           "OR Visit_Count LIKE ? OR Typed_Count LIKE ?;", 
           ("%"+x+"%", "%"+x+"%", "%"+x+"%", "%"+x+"%", "%"+x+"%")): 
        self.browserUrl.append(str(row)) 
    conn.close() 
Смежные вопросы