[sqlalchemy] Re: python: sqlalchemy - how do I ensure connection not stale using new event system

2013-04-02 Thread algotr8der
Below is the traceback. When it attempts to perform the conn.execute(), 
which is the db insert is where it seems to realize the connection is 
stale. 

Traceback (most recent call last):
  File myscript.py, line 126, in module
main()
  File myscript.py, line 33, in main
insert_data(final_data, table_name)
  File myscript.py, line 122, in insert_data
conn.execute(ins, final_data)
  File /usr/lib/python2.6/site-packages/sqlalchemy/engine/base.py, line 
824, in execute
return Connection.executors[c](self, object, multiparams, params)
  File /usr/lib/python2.6/site-packages/sqlalchemy/engine/base.py, line 
874, in _execute_clauseelement
return self.__execute_context(context)
  File /usr/lib/python2.6/site-packages/sqlalchemy/engine/base.py, line 
894, in __execute_context
self._cursor_executemany(context.cursor, context.statement, 
context.parameters, context=context)
  File /usr/lib/python2.6/site-packages/sqlalchemy/engine/base.py, line 
960, in _cursor_executemany
self._handle_dbapi_exception(e, statement, parameters, cursor, context)
  File /usr/lib/python2.6/site-packages/sqlalchemy/engine/base.py, line 
931, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e, 
connection_invalidated=is_disconnect)
sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server 
has gone away') u'INSERT INTO...

On Monday, April 1, 2013 7:04:48 PM UTC-7, algot...@gmail.com 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)
 for c in mytable.c:
 print c
 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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sqlalchemy] Re: python: sqlalchemy - how do I ensure connection not stale using new event system

2013-04-02 Thread algotr8der
I tried to include pool_recycle = 10 (seconds) in my create_engine call but 
that doesn't fix the problem. I still get the same error. Hmm

On Monday, April 1, 2013 7:04:48 PM UTC-7, algot...@gmail.com 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)
 for c in mytable.c:
 print c
 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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sqlalchemy] Re: python: sqlalchemy - how do I ensure connection not stale using new event system

2013-04-02 Thread algotr8der
To clarify my environment. I have a VM (Linux Redhat) which has MySQL 
server running on it. My script runs locally on the same machine. It is a 
simple script that is doing a insert many after processing/parsing a csv 
file. I don't have any web apps or anything of that nature. 

On Monday, April 1, 2013 7:04:48 PM UTC-7, algot...@gmail.com 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)
 for c in mytable.c:
 print c
 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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.