В Sqlite3 оператор SELECT не возвращает все возможные строки - PullRequest
0 голосов
/ 22 декабря 2018

В моем коде я использую pyqt5 с sqlite3 для создания приложения, которое запрашивает строки из базы данных.Я создал def search(self) метод, который должен возвращать записи, дающие national_id в качестве входных данных, используя оператор SELECT (показано ниже).Проблема в том, что у меня может быть несколько строк с одинаковым national_id, но код возвращает только первую (даже если я использую commit()).Как я могу вернуть ВСЕ возможные строки, которые удовлетворяют запросу?

PS Я использую QTableWidget, чтобы показать результаты (вы можете сделать вывод, что код GUI сгенерирован из Qt Designer, но я добавляю свои собственные методы по мере необходимости)

Это Tracking таблица:

CREATE TABLE `Tracking` (
    `national_id`   INTEGER,
    `membership_id` INTEGER,
    `visitor_name`  TEXT,
    `visiting_time` TEXT,
    `phone` TEXT,
    `num_visitors`  INTEGER,
    `visiting_type` TEXT,
    `status`    TEXT,
    `notes` TEXT
);

Метод поиска следующий:

def search(self):

    id = self.get_nationalID()
    db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'resort.db'))
    cur = db.cursor()
    result = cur.execute('SELECT * FROM Tracking WHERE national_id=?', (id,))
    db.commit()

    if id == -1:
        pass
    else:
        self.tableWidget.setRowCount(0)
        for row_index, row_data in enumerate(result.fetchall()):
            self.tableWidget.insertRow(row_index)
            for col_index, col_data in enumerate(row_data):
                self.tableWidget.setItem(row_index, col_index, QTableWidgetItem(str(col_data)))
        self.resize_table_view()


def get_nationalID(self):
    i, okPressed = QInputDialog.getInt(self, "Input", "ًEnter ID")
    if okPressed:
        return i
    else:
        return -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...