使用Python(2.7)和sqlite(3)我试图将查询结果复制到表中。 因为查询的结果非常大,我想批量使用“fetchmany”。 查询工作正常,也可以批量检索结果。 问题是当我尝试复制表中的结果时,它会在第一批后停止。
我怀疑问题是光标的位置。
如何在python中返回游标?
P.S:我在这里看到很多关于光标(关闭)的帖子,但没有看到我的问题的答案。请注意我是Python的新手,如果问题很简单,请道歉。这里是我的代码片段:(示例)
import sqlite3
dbLocation = 'P:/XXX/db1.db'
connection = sqlite3.connect(dbLocation)
cursor = connection.cursor()
strSQLStatement = """
SELECT
whatever1,
whaterver2
from wherever
LIMIT 10"""
cursor.execute(strSQLStatement)
#the following codes works
# printing the 10 results
while True:
results = cursor.fetchmany(2)
if not results:
break
print results
#the following codes does NOT work
# Only 2 results are processed
while True:
results = cursor.fetchmany(2)
if not results:
break
print results
cursor.executemany ('INSERT INTO NewTable (?,?)',results)
connection.commit()
答案 0 :(得分:1)
您在原始光标上的executemany()
号召唤了之前的内容。创建第二个游标以执行插入。