我有一些业务逻辑可以多次迭代,每次都需要执行简单的查询。每次我想将SELECT语句存储为字符串数组或类似的东西,然后在循环后立即执行所有语句,而不是调用db。这可能与python和sqlite一起使用吗?
答案 0 :(得分:1)
我怀疑如果你找出一个“更大”的查询然后在检索信息后分解结果集,你会更好。
换句话说,不是三个调用数据库(Alice,Betty和Claire各一个),而是使用类似的东西:
select stuff from a_table
where person in ('Alice', 'Betty', 'Claire')
然后处理考虑person
的实际数据。
显然,只有在你可以在执行基于人的操作的任何之前弄清楚查询的情况下,这种情况才有效,但根据你的问题,看起来就是这种情况。
答案 1 :(得分:1)
execute()
只会执行一个SQL语句。如果您尝试使用它执行多个语句,则会引发警告。如果要通过一次调用执行多个SQL语句,请使用executescript()
。
但是,executescript()
不允许您访问所有结果。
要获得多个查询结果,您必须自己进行循环:
def execute_many_selects(cursor, queries):
return [cursor.execute(query).fetchall() for query in queries]
SQLite是一个嵌入式库,因此在进行多个数据库调用时不会产生客户端/服务器通信开销。