0

使用 Python (2.7) 和 sqlite (3) 我正在尝试将查询结果复制到表中。因为查询的结果很大,所以想批量使用“fetchmany”。查询工作正常,也可以批量检索结果。问题是当我尝试复制表中的结果时,它会在第一批之后停止。

我怀疑问题出在光标的位置。

如何在 python 中返回光标?

PS:我在这里看到很多关于光标(关闭)的帖子,但还没有看到我的问题的答案。另请注意,我是 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()
4

1 回答 1

1

executemany()原始光标的调用破坏了之前的内容。创建第二个光标以执行插入。

于 2012-08-19T16:11:59.840 回答