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()呼び出しは、以前にあったものを覆い隠します。挿入を実行するための2番目のカーソルを作成します。

于 2012-08-19T16:11:59.840 に答える