我想构建一个辅助函数来从sqlite获取查询结果,用于与另一个数据库的结果进行比较。
我希望用户拥有一个简单的界面,在那里他用他的查询调用函数并获得结果,而无需任何其他准备。
我最终写了两个函数:
import sqlite3
.
.
def sqlite_query_executor(query):
conn=sqlite3.connect(':memory:')
cur=conn.cursor()
yield cur.execute(query).fetchall()[0][0]
那个意图由用户调用:
def query_sqlite(query):
return next(sqlite_query_executor(query))
在修补第一个函数时,我最初编写了另一个版本,其结尾略有不同:
def sqlite_query_executor(query):
conn=sqlite3.connect()
cur=conn.cursor()
while True:
yield cur.execute(query).fetchall()[0][0]
两个版本似乎运作良好,但我正在努力解决这些问题。
有人可能会对这种差异有所了解吗?这种用例的正确模式是什么?
答案 0 :(得分:0)
fetchall()做了太多工作,应该用 fetchone()替换:
def sqlite_query_executor(query):
conn=sqlite3.connect()
cur=conn.cursor()
while True:
yield cur.execute(query).fetchone()[0]