Newbee, Finding a record in my DataBase

I am new tp PyQt5 and Python. I have designed an SQLite database as a Telephone directory. The fields are Abode, S_Name, F_Name Telephone_No and Email. I used and modified an existing python program. OK. so far, my program and database work well, but I would like to add the ability to search on S_Name and onother search on Telephone_No. I have been trying to make it work to the point of frustration. :slight_smile: If anybody could help I would be grateful. Below is my program so far:

import os
import sys

from PyQt5 import QtGui
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtCore import QSize, Qt
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel

from PyQt5.QtWidgets import (
    QApplication,
    QDataWidgetMapper,
    QFormLayout,
    QHBoxLayout,
    QLabel,
    QLineEdit,
    QMainWindow,
    QPushButton,
    QVBoxLayout,
    QWidget,
)


basedir = os.path.dirname(__file__)

db = QSqlDatabase("QSQLITE")
db.setDatabaseName(os.path.join("Phone_Book"))
db.open()


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.setWindowTitle("Phone Book")
        self.setWindowIcon(QtGui.QIcon('address-book-open.png'))
        self.setStyleSheet("QMainWindow{background:'tan'}")

        layout = QVBoxLayout()

        form = QFormLayout()

        self.Abode = QLineEdit()
        self.Abode.setDisabled(True)
        self.Abode.setStyleSheet("QLineEdit{background: 'white';\
                                 color:'red'; font-style: 'italic';\
                                     font-weight: 'bold';}")
                                 
        self.S_Name = QLineEdit()
        self.F_Name = QLineEdit()
        self.Telephone_No = QLineEdit()
        self.Email = QLineEdit()
        
        form.addRow(QLabel("Abode"), self.Abode)
        form.addRow(QLabel("SirName"), self.S_Name)
        form.addRow(QLabel("First Names"), self.F_Name)
        form.addRow(QLabel("Telephone Number"), self.Telephone_No)
        form.addRow(QLabel("email Address"), self.Email)

        self.model = QSqlTableModel(db=db)

        self.mapper = QDataWidgetMapper()
        self.mapper.setModel(self.model)

        self.mapper.addMapping(self.Abode, 0)
        self.mapper.addMapping(self.S_Name, 1)
        self.mapper.addMapping(self.F_Name, 2)
        self.mapper.addMapping(self.Telephone_No, 3)
        self.mapper.addMapping(self.Email, 4)

        self.model.setTable("Phones")
        self.model.select()

        self.mapper.toFirst()

        # tag::controls[]
        self.setMinimumSize(QSize(400, 250))

        hcontrols = QHBoxLayout()

        prev_rec = QPushButton("Previous")
        prev_rec.clicked.connect(self.mapper.toPrevious)

        next_rec = QPushButton("Next")
        next_rec.clicked.connect(self.mapper.toNext)

        save_rec = QPushButton("Save Changes")
        save_rec.clicked.connect(self.mapper.submit)

        hcontrols.addWidget(prev_rec)
        hcontrols.addWidget(next_rec)
        hcontrols.addWidget(save_rec)

        layout.addLayout(form)
        layout.addLayout(hcontrols)
        
        vcontrols = QHBoxLayout()
        
        sirName_Search = QPushButton("Search Sir Name")
        sirName_Search.setStyleSheet(":hover{background: 'red'}");
        sirName_Search.clicked.connect(self.Search_S_Name)
        
        telephone_Search = QPushButton("Search Telephone No")
        telephone_Search.setStyleSheet(":hover{background: 'red'}");
        #telephone_Search.clicked.connect(self.Search_Telephone)
        
        vcontrols.addWidget(sirName_Search)
        vcontrols.addWidget(telephone_Search)
        
        layout.addLayout(vcontrols)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)
        
    def Search_S_Name(self):
        pass
    
    def Search_Telephone(self):
        pass
    
    def update_filter(self, s):
        filter_str = 'S_Name LIKE "%{}%"'.format(s)
        self.model.setFilter(filter_str)

app = QApplication(sys.argv)
window = MainWindow()
app.setStyle("Fusion")
window.show()
app.exec_()