Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Failure on cursor.fetchall()

Aperta
#380 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
pandas, python, sql
Ambito
databases

Direzione di ricerca

Inizia da integration_test/utils/databricks/databricks_sql.py alla riga 89, quindi segui cursor.fetchall attraverso databricks/sql/client.py e la conversion pandas mostrata nel traceback. Riproduci il caso di integrazione e determina perché il risultato COUNT di una riga con dati nullable Int64 solleva TypeError; il lavoro è completato quando fetchall restituisce il conteggio senza questa eccezione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Recently started having issues with the fetchall() method. This exact code was working fine last week, but now this same query statement is throwing the errors seen below.

def databricks_sql_count(column, catalog, schema, table, where=""):
    connection_cursor = open_connection()
    cursor = connection_cursor["cursor"]
    connection = connection_cursor["connection"]
    query = f'SELECT COUNT({column}) FROM `{catalog}`.`{schema}`.`{table}` WHERE  {where};'
    cursor.execute(query)
    response = cursor.fetchall()
    close_connection(cursor, connection)
    return response[0][0]

initial_count = databricks_sql_count('visitor_id',
                                               catalog,
                                               schema,
                                               table,
                                               f"created_at >= '{TEST_START_DATE}'")

integration_test/utils/databricks/databricks_sql.py:89: in databricks_sql_count
response = cursor.fetchall()
/usr/local/lib/python3.10/dist-packages/databricks/sql/client.py:670: in fetchall
return self.active_result_set.fetchall()
/usr/local/lib/python3.10/dist-packages/databricks/sql/client.py:944: in fetchall
return self._convert_arrow_table(self.fetchall_arrow())
/usr/local/lib/python3.10/dist-packages/databricks/sql/client.py:884: in _convert_arrow_table
res = df.to_numpy(na_value=None)
/usr/local/lib/python3.10/dist-packages/pandas/core/frame.py:1981: in to_numpy
result = self._mgr.as_array(dtype=dtype, copy=copy, na_value=na_value)


self = BlockManager
Items: Index(['0'], dtype='object')
Axis 1: RangeIndex(start=0, stop=1, step=1)
ExtensionBlock: slice(0, 1, 1), 1 x 1, dtype: Int64
dtype = None, copy = True, na_value = None

  def as_array(
      self,
      dtype: np.dtype | None = None,
      copy: bool = False,
      na_value: object = lib.no_default,
  ) -> np.ndarray:
      """
      Convert the blockmanager data into an numpy array.
  
      Parameters
      ----------
      dtype : np.dtype or None, default None
          Data type of the return array.
      copy : bool, default False
          If True then guarantee that a copy is returned. A value of
          False does not guarantee that the underlying data is not
          copied.
      na_value : object, default lib.no_default
          Value to be used as the missing value sentinel.
  
      Returns
      -------
      arr : ndarray
      """
      passed_nan = lib.is_float(na_value) and isna(na_value)
  
      if len(self.blocks) == 0:
          arr = np.empty(self.shape, dtype=float)
          return arr.transpose()
  
      if self.is_single_block:
          blk = self.blocks[0]
  
          if na_value is not lib.no_default:
              # We want to copy when na_value is provided to avoid
              # mutating the original object
              if lib.is_np_dtype(blk.dtype, "f") and passed_nan:
                  # We are already numpy-float and na_value=np.nan
                  pass
              else:
                  copy = True
  
          if blk.is_extension:
              # Avoid implicit conversion of extension blocks to object
  
              # error: Item "ndarray" of "Union[ndarray, ExtensionArray]" has no
              # attribute "to_numpy"
              arr = blk.values.to_numpy(  # type: ignore[union-attr]
                  dtype=dtype,
                  na_value=na_value,
                  copy=copy,
              ).reshape(blk.shape)
          else:
              arr = np.array(blk.values, dtype=dtype, copy=copy)
  
          if using_copy_on_write() and not copy:
              arr = arr.view()
              arr.flags.writeable = False
      else:
          arr = self._interleave(dtype=dtype, na_value=na_value)
          # The underlying data was copied within _interleave, so no need
          # to further copy if copy=True or setting na_value
  
      if na_value is lib.no_default:
          pass
      elif arr.dtype.kind == "f" and passed_nan:
          pass
      else:
          arr[isna(arr)] = na_value

E TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'

/usr/local/lib/python3.10/dist-packages/pandas/core/internals/managers.py:1701: TypeError

Lingua principale
Python
Stelle
233
Fork
152
Merge medio
21h 5m
PR unite (30g)
10

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di databricks/databricks-sql-python

Tutte le issue di databricks/databricks-sql-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.