If you want to search "structurally", e.g. "find all people over 40 years born in Amsterdam", then you probably need to make a frontend that generated and executes SQL queries. You could use a web frontend, for which you could Django or Flask or another Python framework (since you tagged this as Python).
If instead you want a more Google-like search, where you just enter free text, and it searches the whole database, then I recommend you use existing software to do the actual searching, because that's hard to do well. (You can search for texts, but it's hard to find what result is the most relevant, plus it takes a lot of queries to search a large database, and you might want fuzzy search...).
In such as case, you could use the same as above, but you would add something like ElasticSearch to the mix. I know Django had a plugin called Haystack, that's just one way though, you could even call ElasticSearch directly.
What happens is that ElasticSearch keeps a search index based on your database. Then your application asks ElasticSearch for results matching a text. The result can then be linked back to a row in the database.