Вы получаете только одну возвращаемую строку, потому что ваш код буквально возвращает первый результат генератора строк:
import sqlite3
def data_provider():
conn = sqlite3.connect('MainDatabase.db')
cur = conn.cursor()
sqlstr = 'SELECT * FROM Products_table'
for row in cur.execute(sqlstr):
return row # <- This is the one row you're returning because 'return' is causing execution to leave the loop
print(data_provider())
Если вы хотите вернуть все строки в виде списка Python, вы можетеМетод fetchall () для курсора выглядит так:
import sqlite3
def data_provider():
conn = sqlite3.connect('MainDatabase.db')
cur = conn.cursor()
sqlstr = 'SELECT * FROM Products_table'
cur.execute(sqlstr)
return cur.fetchall()
print(data_provider())