title: Pymysql cur.fetchall() returns None
body: <p>This is my first post here and I found so many answers here I am really confident, that some can help me. Because I work with Python for only about half a year now, it maybe is a very stupid beginners question. Forgive me so far...</p>
  
  <p>In my project I have several different functions. Two of them are listed below. <em>mysqlLogbookIndex</em> is a thread witch show refresh a list with the names of some table from a database. The connection to the DB is existing at the moment, the function is called and so far it works fine. At the end I can see a tuple containing all the table names.</p>
  
  <p>But now the second function, named <em>create_flight</em> comes in. It is a callback for a Tkinter button and creates some new tables in my database. It uses the same preopened connection than <em>mysqlLogbookIndex</em>.</p>
  
  <p>I expected to see the new tables is my tuple in the next cycle of <em>mysqlLogbookIndex</em> but what happened is that <em>result</em> turned into a None.</p>
  
  <p>Do you know why?</p>
  
  <p><strong>Widget function:</strong></p>
  
  <pre><code>def create_flight(self):
  # *********************************************************************************************
  # * Create new flight table                                                                   *
  # *********************************************************************************************
  if self.sql_write.get():
      # ********************************************
      # * Try to connect message                   *
      # ********************************************
      self.printLog(self.lbl_sql_write, self.LANG['tryCreateTable'], 'normal')
      logging.info('Creating table for flight tracking...')
  
  
      # ********************************************
      # * Create name tables                       *
      # ********************************************
      event = self.oprSett['mysql']['event']
      now = str(int(time.time()))
      mainName = "tbl_%s_%s_" % (event, now)
  
      trackingTable = mainName + "flighttrack"
      logging.debug('Name of tracking table: %s', trackingTable)
  
      unitsTable = mainName + "units"
      logging.debug('Name of units table: %s', unitsTable)
  
      headerTable = mainName + "header"
      logging.debug('Name of header table: %s', headerTable)
  
  
      # ********************************************
      # * Read SQL parameter                       *
      # ********************************************
      logging.debug('Reading CSV file for table structure...')
      csvFile = "config/newFlight.csv"
      try:
          sqlCsv = csv.reader(open(csvFile, 'rb'),
                              delimiter = ',',
                              quotechar = '"',
                              quoting = csv.QUOTE_ALL
                             )
      except:
          msg = csvFile
          msg += "\n\n"
          msg += self.LANG['e13']
          tkMessageBox.showerror("Error 13", msg)
          self.printLog(self.lbl_sql_write, self.LANG['e13'], 'error')
          logging.error('File not found!')
          #print "[Error 13] " + self.LANG['e13']
          return 0
  
      # Transfer data from CSV file into own list
      sqlVars = []
      for row in sqlCsv:
          if len(row) == 4 and row[0][0] != "#": # No comment
              sqlVars.append(row)
  
  
      # *************************************************
      # * Create SQL statement to create tracking table *
      # *************************************************
  
      # Head for creating new table
      sql = "CREATE TABLE IF NOT EXISTS `%s` (\n" % trackingTable
      sql += "  `ID` int(11) NOT NULL AUTO_INCREMENT,\n" # Becomes primary key
  
      # Parse SQL variables from CSV file
      for row in sqlVars:
          if len(row[2]) &gt; 0:                # Data type requires length
              sql += "  `%s` %s(%s) NOT NULL COMMENT '%s',\n" % (row[0], row[1], row[2], row[3])
          else:                              # Data type not requires length
              sql += "  `%s` %s NOT NULL COMMENT '%s',\n" % (row[0], row[1], row[3])
  
      # Footer of SQL statement for creating new table
      sql += "  PRIMARY KEY (`ID`)\n"
      sql += ") ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=0;\n"
      sql += "\n"
  
      # In debug mode print SQL statement to console
      #logging.debug('SQL statement to create tracking table:\n%s', sql)
  
  
      # **********************************************
      # * Create SQL statement to create units table *
      # **********************************************
  
      # Head for creating new table
      sql += "CREATE TABLE IF NOT EXISTS `%s` (\n" % unitsTable
      sql += "  `ID` int(11) NOT NULL AUTO_INCREMENT,\n"                # Becomes primary key
      sql += "  `Dataref` varchar(10) COLLATE latin1_german1_ci NOT NULL,\n"
      sql += "  `Unit` varchar(10) COLLATE latin1_german1_ci NOT NULL,\n"
      sql += "  PRIMARY KEY (`ID`)\n"
      sql += ") ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1 ;\n"
      sql += "\n"
  
      # Parse SQL variables from CSV file
      for row in sqlVars:
          # Insert units in tbl_units
          sql += "INSERT INTO %s VALUES ('', '%s', '%s');\n" % (unitsTable, row[0], row[3])
      sql += "\n"
  
      # In debug mode print SQL statement to console
      #logging.debug('SQL statement to create units table:\n%s', sql)
  
  
      # ***********************************************
      # * Create SQL statement to create header table *
      # ***********************************************
  
      # Head for creating new table
      sql += "CREATE TABLE IF NOT EXISTS `%s` (\n" % headerTable
      #sql += "  `ID` int(11) NOT NULL AUTO_INCREMENT,\n"                # Becomes primary key
      sql += "  `Parameter` char(21) COLLATE latin1_german1_ci NOT NULL,\n"
      sql += "  `Value` varchar(100) COLLATE latin1_german1_ci NOT NULL,\n"
      sql += "  PRIMARY KEY (`Parameter`)\n"
      sql += ") ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1 ;\n"
      sql += "\n"
  
      # IGC syntax from: http://carrier.csi.cam.ac.uk/forsterlewis/soaring/igc_file_format/igc_format_2008.html
  
      # Adding header parameters, some values are coming later
      sql += "INSERT INTO %s VALUES ('AXXX001', '');\n"                        % (headerTable)                     # Manufacturer code
      sql += "INSERT INTO %s VALUES ('HFFXA', '035');\n"                       % (headerTable)                     # Fix accuracy
      sql += "INSERT INTO %s VALUES ('HFDTE', '');\n"                          % (headerTable)                     # UTC date of flight
      sql += "INSERT INTO %s VALUES ('HFPLTPILOT', '');\n"                     % (headerTable)                     # Pilots name
      sql += "INSERT INTO %s VALUES ('HFGTYGLIDERTYPE', 'KA8B');\n"            % (headerTable)                     # Glider type
      sql += "INSERT INTO %s VALUES ('HFGIDGLIDERID', 'D1389');\n"             % (headerTable)                     # Glider callsign
      sql += "INSERT INTO %s VALUES ('HFDTM100DATUM', 'WGS-1984');\n"          % (headerTable)                     # GPS datum
      sql += "INSERT INTO %s VALUES ('HFGPSGPS', 'X-PLANE 10');\n"             % (headerTable)                     # Manufacturer of GPS module
      sql += "INSERT INTO %s VALUES ('HFFTYFRTYPE', 'FLORIANMEISSNER,HCM');\n" % (headerTable)                     # Logger type
      sql += "INSERT INTO %s VALUES ('HFRFWFIRMWAREVERSION', '%s');\n"         % (headerTable, self.VERSION)       # Firmware version
      sql += "INSERT INTO %s VALUES ('HFRHWHARDWAREVERSION', '%s');\n"         % (headerTable, self.XPLANEVERSION) # Hardware version
      sql += "INSERT INTO %s VALUES ('HFCCLCOMPETITIONCLASS', 'CLUB');\n"      % (headerTable)                     # Competition class
  
  
      # ********************************************
      # * Handover SQL statement to create table   *
      # * to DB.                                   *
      # ********************************************
      logging.debug('SQL statement to create all tables:\n%s', sql)
      try:
          cur = self.conn.cursor()
          cur.execute(sql)
          cur.close()
      except pymysql.Error, e:
          tkMessageBox.showerror("Error 9", self.LANG['e9'])
          self.printLog(self.lbl_sql_write, self.LANG['e9'], 'error')
          #print "[Error 9] " + self.LANG['e9']
          logging.error('Could not create tracking table!')
          logging.debug(e)
          return 0
  
      # ********************************************
      # * Print success message                    *
      # ********************************************
      logging.info('Tracking table created.')
      self.printLog(self.lbl_sql_write, self.LANG['doneCreateTable'], 'success')
      text = self.LANG['flightId'] + " " +  trackingTable
      self.printLog(self.lbl_sql_write, text, 'normal', timestamp=False)
  
      # Make trackingTable public
      self.tableName = trackingTable
  
      # Enable tambour register to write in database
      self.tambourInMysql = True
  </code></pre>
  
  <p><strong>Refresh Loop:</strong></p>
  
  <pre><code>def mysqlLogbookIndex(self):
  
  delay = float(self.oprSett['logbook']['refresh_delay']) / 1000
  
  # ********************************************************************
  # * Run only if MySQL connection from writeMysql.py is active        *
  # ********************************************************************
  while self.sql_write.get():
  
      # ********************************************
      # * Query to get list with tables            *
      # ********************************************
      logging.info('Querying list with tables from database')
      dbName = self.oprSett['mysql']['db']
  
      sql = "SELECT TABLE_NAME\n"
      sql += "FROM `information_schema`.`TABLES`\n"
      sql += "WHERE `TABLE_SCHEMA` LIKE '%s'" % dbName
  
      try:
          cur = self.conn.cursor()
          cur.execute(sql)
          result = cur.fetchall()
          cur.close()
      except pymysql.Error, e:
          logging.warning('Could not take flights from database!')
          logging.debug(e)
          self.printLog(self.lbl_sql_write, self.LANG['e20'], 'error')
          #continue
      else:
          logging.info('Logbook refreshed.')
  
          print result
  </code></pre>
  
  <p>Thanks in advance for all helpful posts...</p>