我有一个for循环,它从SQLite3数据库中检索一页文本的bigram数据。
def bigram_db():
cursr.execute("SELECT * FROM trainedGrammar")
data = cursr.fetchall()
for data in data:
element = data
txt = element[0] #fetch first element of list
txt += txt
return txt
我尝试使用txt + = txt但是当我尝试在函数bigram_db()之外打印缓存时,这只给了我一个值得bigram数据的段落。那么如何存储将由for循环输出的所有bigram数据,这些数据可以在for循环之外访问然后当我打印它时,我想要整个bigram数据数据库可用。
答案 0 :(得分:2)
您不需要执行fetchall()
,您可以直接在光标上进行迭代。并且您不能将相同的变量txt
用于两个目的;在循环中,行txt = element[0]
将覆盖其旧值。
您的功能应如下所示:
def bigram_db():
cursr.execute("SELECT * FROM trainedGrammar")
txt = ""
for row in cursr:
txt += row[0]
return txt
或没有for循环:
def bigram_db():
cursr.execute("SELECT * FROM trainedGrammar")
return "".join([row[0] for row in cursr])