我需要在python中创建一个函数,该函数返回sqllite数据库中的所有行。
我已经创建了此函数,但它仅返回表的第一行。
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
print(data_provider())
答案 0 :(得分:2)
您只会返回一行,因为您的代码实际上返回了行生成器的第一个结果:
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())