mysql connector - python script hangs when calling cursor.fetchall() with large data set -


i have query returns on 125k rows.

the goal write script iterates through rows, , each, populate second table data processed result of query.

to develop script, created duplicate database small subset of data (4126 rows)

on small database, following code works:

import os import sys import random  import mysql.connector  cnx = mysql.connector.connect(user='dbuser', password='thepassword',                           host='127.0.0.1',                           database='db') cnx_out = mysql.connector.connect(user='dbuser', password='thepassword',                           host='127.0.0.1',                           database='db')  ins_curs = cnx_out.cursor()  curs = cnx.cursor(dictionary=true) #curs = cnx.cursor(dictionary=true,buffered=true) #fail  open('sql\\getrawdata.sql') fh:     sql = fh.read()  curs.execute(sql, params=none, multi=false) result = curs.fetchall()  #<=== script stops @ point print len(result) #<=== line never executes  print curs.column_names  curs.close() cnx.close() cnx_out.close() sys.exit() 

the line curs.execute(sql, params=none, multi=false) succeeds on both large , small databases. if use curs.fetchone() in loop, can read records.

if alter line:

curs = cnx.cursor(dictionary=true) 

to read:

curs = cnx.cursor(dictionary=true,buffered=true) 

the script hangs @ curs.execute(sql, params=none, multi=false).

i can find no documentation on limits fetchall(), nor can find way increase buffer size, , no way tell how large buffer need.

there no exceptions raised.

how can resolve this?

i having same issue, first on query returned ~70k rows , on 1 returned around 2k rows (and me ram not limiting factor). switched using mysql.connector (i.e. mysql-connector-python package) mysqldb (i.e. mysql-python package) , able fetchall() on large queries no problem. both packages seem follow python db api, me mysqldb drop-in replacement mysql.connector, no code changes necessary beyond line sets connection. ymmv if you're leveraging specific mysql.connector.

pragmatically speaking, if don't have specific reason using mysql.connector solution switch package works better!


Popular posts from this blog