私はpython2.7、pyodbc、mysql5.5を使用しています。私は窓にいます
数百万行を返すクエリがあり、それをチャンクで処理したいと思います。fetchmany関数を使用します。
彼はコードの一部です
import pyodbc
connection = pyodbc.connect('Driver={MySQL ODBC 5.1 Driver};Server=127.0.0.1;Port=3306;Database=XXXX;User=root; Password='';Option=3;')
cursor_1 = connection.cursor()
strSQLStatement = 'SELECT x1, x2 from X'
cursor_1.execute(strSQLStatement)
# the error occurs here
x1 = cursor_1.fetchmany(10)
print x1
connection.close()
私の問題:
MySQLクライアントのメモリが不足しているというエラーが表示されます
これは、
cursor_1.execute
すべてをメモリに読み込もうとし、次のことを(1つずつ)試したが、役に立たなかったためだと思います。- ユーザーインターフェイス(ODBC –管理ツール)で、[転送専用カーソルの結果をキャッシュしない]にチェックマークを付けました</ li>
- connection.query( "SET GLOBAL query_cache_size = 40000")
私の質問:
pyodbcには、クエリを実行して結果をオンデマンドでのみ提供する可能性がありますか?
MySQLのマニュアルでは、-quickオプションを指定してmysqlを呼び出すことを提案しています。これは、コマンドラインを使用しない場合にも実行できますか?
ご協力いただきありがとうございます。
PS:代替のMySQLモジュールの提案も歓迎しますが、私はポータブルpythonを使用しているため、選択肢が限られています。