Итерация в запросе SQLite

В БД два номера тлф, при общем запросе по цифре 9 как надо выдает оба номера в таком виде [(8981,), (8911,)], при итерации выдает только первый номер (8981,) и все.

def get_num(num):
    with sqlite3.connect("BasePers.db") as con:
        db = con.cursor()
        i = db.execute(f"SELECT PersonNumber FROM persons WHERE PersonNumber LIKE '%{num}%'").fetchall()
        for n in i:
            return n

print(get_num(9))

Если писать

for n in i.fetchone():
    return n

то выдает в идеале без скобок, но только первый номер


Ответы (1 шт):

Автор решения: Namerek
def get_num(num):
    with sqlite3.connect("BasePers.db") as con:
        db = con.cursor()
        i = db.execute(f"SELECT PersonNumber FROM persons WHERE PersonNumber LIKE '%{num}%'").fetchall()
        for n, *_ in i:
            yield n

print(list(get_num(9)))

ИЛИ

def get_num(num):
    with sqlite3.connect("BasePers.db") as con:
        db = con.cursor()
        i = db.execute(f"SELECT PersonNumber FROM persons WHERE PersonNumber LIKE '%{num}%'").fetchall()
        return [n for n, *_ in i]

print(get_num(9))
→ Ссылка