title: Accessing a MySQL connection pool from Python multiprocessing
body: <p>I'm trying to set up a MySQL connection pool and have my worker processes access the already established pool instead of setting up a new connection each time.</p>
  
  <p>I'm confused if I should pass the database cursor to each process, or if there's some other way to do this? Shouldn't MySql.connector do the pooling automatically? When I check my log files, many, many connections are opened and closed ... one for each process.</p>
  
  <p>My code looks something like this:</p>
  
  <pre><code>PATH = "/tmp"
  
  class DB(object):
    def __init__(self):
      connected = False
      while not connected:
        try:
          cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name = "pool1",
                                                            **config.dbconfig)
          self.__cnx = cnxpool.get_connection()
        except mysql.connector.errors.PoolError:
          print("Sleeping.. (Pool Error)")
          sleep(5)
        except mysql.connector.errors.DatabaseError:
          print("Sleeping.. (Database Error)")
          sleep(5)
  
      self.__cur = self.__cnx.cursor(cursor_class=MySQLCursorDict)
  
    def execute(self, query):
      return self.__cur.execute(query)
  
  def isValidFile(self, name):
    return True
  
  def readfile(self, fname):
    d = DB()
    d.execute("""INSERT INTO users (first_name) VALUES ('michael')""")
  
  def main():
    queue = multiprocessing.Queue()
    pool = multiprocessing.Pool(None, init, [queue])
    for dirpath, dirnames, filenames in os.walk(PATH):
  
      full_path_fnames = map(lambda fn: os.path.join(dirpath, fn),
                             filenames)
      full_path_fnames = filter(is_valid_file, full_path_fnames)
      pool.map(readFile, full_path_fnames)
  
  if __name__ == '__main__':
    sys.exit(main())
  </code></pre>