def _fetch(self, cursor): rows = cursor.fetchall() # TODO(wesm): please evaluate/reimpl to optimize for perf/memory dtypes = [self._db_type_to_dtype(x[1]) for x in cursor.description] names = [x[0] for x in cursor.description] cols = {} for (col, name, dtype) in czip(czip(*rows), names, dtypes): try: cols[name] = pd.Series(col, dtype=dtype) except TypeError: # coercing to specified dtype failed, e.g. NULL vals in int col cols[name] = pd.Series(col) return pd.DataFrame(cols, columns=names)
def _fetch(self, cursor): data, columns = cursor names, types = czip(*columns) cols = {} for (col, name, db_type) in czip(data, names, types): dtype = self._db_type_to_dtype(db_type, name) try: cols[name] = pd.Series(col, dtype=dtype) except TypeError: cols[name] = pd.Series(col) return pd.DataFrame(cols, columns=names)
def _fetch(self, cursor): import pandas as pd rows = cursor.fetchall() # TODO(wesm): please evaluate/reimpl to optimize for perf/memory dtypes = [self._db_type_to_dtype(x[1]) for x in cursor.description] names = [x[0] for x in cursor.description] cols = {} for (col, name, dtype) in czip(czip(*rows), names, dtypes): try: cols[name] = pd.Series(col, dtype=dtype) except TypeError: # coercing to specified dtype failed, e.g. NULL vals in int col cols[name] = pd.Series(col) return pd.DataFrame(cols, columns=names)
def _execute(self, query, external_tables=(), results=True): if isinstance(query, DDL): query = query.compile() self.log(query) response = self.con.process_ordinary_query( query, columnar=True, with_column_types=True, external_tables=external_tables) if not results: return response data, columns = response colnames, typenames = czip(*columns) coltypes = list(map(ClickhouseDataType.parse, typenames)) return data, colnames, coltypes