Failure on cursor.fetchall()
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
調査の方向性
integration_test/utils/databricks/databricks_sql.py の89行目から始め、databricks/sql/client.py 内の cursor.fetchall と、traceback に示された pandas 変換を追ってください。統合ケースを再現し、nullable Int64 データを含む1行の COUNT 結果で TypeError が発生する理由を特定してください。fetchall がその例外なしに件数を返せば完了です。
索引モデルが issue の本文から書いたものです。
説明
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 = Nonedef 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_valueE 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
- 主要言語
- Python
- スター
- 233
- フォーク
- 152
- 平均マージ
- 21時間 5分
- マージ済み PR(30日)
- 10
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
databricks/databricks-sql-python のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
databricks/databricks-sql-python の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
PolicyEngine/policyengine-us#9559 ·
-
priority: p3
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
googleapis/librarian#7636 ·
-
from:qa priority:P2 reliability tech-debt
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
spec-kitty/spec-kitty#4874 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100