我需要在python中创建一个函数,它返回我的sqlite数据库中的所有行。
我创建了这个函数,但它只返回我表的第一行。
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())
您只返回一行,因为您的代码实际上是返回行生成器的第一个结果:
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())