Thank you Michael for your response. 
 
So its not a long query that I think is the problem here because I don't 
believe the execution gets that far. My suspicion is that it is the line 
that computes the dictionary key/value pairs, which takes a long time since 
it has to build 677,161 x 10 (columns) = 6.7 million key/value pairs. I 
can't vpn into my machine right now for some reason so I will have to wait 
until tomorrow to get the traceback but my hunch is the connection becomes 
stale after the call to table = Table() because there is not activity while 
the dictionary is being created. 
 
Does this make sense? 
 
engine = create_engine('mysql://blah:blah123@localhost/dbname')     
# Metadata is a Table catalog.     
metadata = MetaData()     
table = Table(table_name, metadata, autoload=True, autoload_with=engine)    
  
column_names = tuple(c.name for c in mytable.c)     
final_data = [dict(zip(column_names, x)) for x in data_2_insert]     
#<<<<<<<<< This is the line that takes time to complete
ins = mytable.insert()     
conn = engine.connect()     
conn.execute(ins, final_data)     
conn.close()

On Monday, April 1, 2013 9:09:34 PM UTC-7, Michael Bayer wrote:

> what is the actual reason that MySQL is disconnecting, is it actually 
> being restarted while the operation proceeds ?     running a long query 
> shouldn't cause the connection to die off unless something goes wrong with 
> the operation.
>
>
>
>
> On Apr 1, 2013, at 10:04 PM, [email protected] <javascript:> wrote:
>
> I am using the sqlalchemy package in python. I have an operation that 
> takes some time to execute after I perform an autoload on an existing 
> table. This causes the following error when I attempt to use the connection:
>
> sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has 
> gone away')
>
> I have a simple utility function that performs an insert many:
>
> def insert_data(data_2_insert, table_name):
>     engine = create_engine('mysql://blah:blah123@localhost/dbname')
>     # Metadata is a Table catalog. 
>     metadata = MetaData()
>     table = Table(table_name, metadata, autoload=True, autoload_with=engine)  
>   column_names = tuple(c.name for c in mytable.c)
>     final_data = [dict(zip(column_names, x)) for x in data_2_insert]
>     ins = mytable.insert()
>     conn = engine.connect()
>     conn.execute(ins, final_data)
>     conn.close()
>
>
> It is the following line that times long time to execute since 
> 'data_2_insert' has 677,161 rows. 
>
> final_data = [dict(zip(column_names, x)) for x in data_2_insert]
>
> I came across the following post below which refers to a similar problem, 
> however I am not sure how to implement the connection management suggested 
> as I am quite a newbie. 
>
> http://stackoverflow.com/questions/3033234/handle-mysql-restart-in-sqlalchemy
>
> Note for SQLAlchemy 0.7 - PoolListener is deprecated, but The same solution 
> can be implemented using the new event system. – robots.jpg
>
> Here is the link to the new event system described by one of the users:
>
> http://docs.sqlalchemy.org/en/latest/core/pooling.html#disconnect-handling-pessimistic
>
> If someone can please show me a couple of pointers on how I could go about 
> integrating the suggestions into the way I use sqlalchemy I would be very 
> appreciative. Thank you. 
>
>
>
>
>
>
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to