如何在Python(sqlite)中返回游标?

时间:2012-08-19 16:07:02

标签: python sqlite cursor etl

使用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()

1 个答案:

答案 0 :(得分:1)

您在原始光标上的executemany()号召唤了之前的内容。创建第二个游标以执行插入。