Example #1
0
 def description(self):
     if self._description:
         return self._description
     if not self.has_result_set:
         return None
     self._description = [(
         self._meta_data.getColumnName(i),
         self._converter.get_jdbc_type_name(
             self._meta_data.getColumnType(i)),
         self._meta_data.getColumnDisplaySize(i),
         None,
         self._meta_data.getPrecision(i),
         self._meta_data.getScale(i),
         self._meta_data.isNullable(i),
     ) for i in xrange(1,
                       self._meta_data.getColumnCount() + 1)]
     return self._description
Example #2
0
 def _process_rows(self, response):
     result_set = response.get('ResultSet', None)
     if not result_set:
         raise DataError('KeyError `ResultSet`')
     rows = result_set.get('Rows', None)
     if rows is None:
         raise DataError('KeyError `Rows`')
     processed_rows = []
     if len(rows) > 0:
         offset = 1 if not self._next_token and self._is_first_row_column_labels(rows) else 0
         processed_rows = [
             tuple([self._converter.convert(meta.get('Type', None),
                                            row.get('VarCharValue', None))
                    for meta, row in zip(self._meta_data, rows[i].get('Data', []))])
             for i in xrange(offset, len(rows))
         ]
     self._rows.extend(processed_rows)
     self._next_token = response.get('NextToken', None)
 def test_empty_result(self, cursor):
     table = "test_pandas_cursor_empty_result_" + "".join(
         [random.choice(string.ascii_lowercase + string.digits) for _ in xrange(10)]
     )
     location = "{0}{1}/{2}/".format(ENV.s3_staging_dir, S3_PREFIX, table)
     query_id, future = cursor.execute(
         """
         CREATE EXTERNAL TABLE IF NOT EXISTS
         {schema}.{table} (number_of_rows INT)
         ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
         LINES TERMINATED BY '\n' STORED AS TEXTFILE
         LOCATION '{location}'
         """.format(
             schema=SCHEMA, table=table, location=location
         )
     )
     df = future.result().as_pandas()
     self.assertEqual(df.shape[0], 0)
     self.assertEqual(df.shape[1], 0)
Example #4
0
 def _process_rows(self, response):
     result_set = response.get("ResultSet", None)
     if not result_set:
         raise DataError("KeyError `ResultSet`")
     rows = result_set.get("Rows", None)
     if rows is None:
         raise DataError("KeyError `Rows`")
     processed_rows = []
     if len(rows) > 0:
         offset = (1 if not self._next_token
                   and self._is_first_row_column_labels(rows) else 0)
         processed_rows = [
             tuple([
                 self._converter.convert(meta.get("Type", None),
                                         row.get("VarCharValue", None))
                 for meta, row in zip(self._meta_data, rows[i].get(
                     "Data", []))
             ]) for i in xrange(offset, len(rows))
         ]
     self._rows.extend(processed_rows)
     self._next_token = response.get("NextToken", None)
 def test_fetchall(self, cursor):
     cursor.execute('SELECT * FROM one_row')
     self.assertEqual(cursor.fetchall(), [(1,)])
     cursor.execute('SELECT a FROM many_rows ORDER BY a')
     self.assertEqual(cursor.fetchall(), [(i,) for i in xrange(10000)])
 def test_null(self, cursor):
     cursor.execute('SELECT null FROM many_rows')
     self.assertEqual(cursor.fetchall(), [(None,)] * 10000)
     cursor.execute('SELECT IF(a %% 11 = 0, null, a) FROM many_rows')
     self.assertEqual(cursor.fetchall(),
                      [(None if a % 11 == 0 else a,) for a in xrange(10000)])
 def test_many_as_pandas(self, cursor):
     df = cursor.execute("SELECT * FROM many_rows").as_pandas()
     self.assertEqual(df.shape[0], 10000)
     self.assertEqual(df.shape[1], 1)
     self.assertEqual([(row["a"], ) for _, row in df.iterrows()],
                      [(i, ) for i in xrange(10000)])
Example #8
0
import contextlib
import os
import random
import string

import pytest
from past.builtins.misc import xrange

from pyathena import connect
from tests.util import Env, read_query

ENV = Env()
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
S3_PREFIX = 'test_pyathena'
SCHEMA = 'test_pyathena_' + ''.join([
    random.choice(string.ascii_lowercase + string.digits) for i in xrange(10)
])


@pytest.fixture(scope='session', autouse=True)
def _setup_session(request):
    request.addfinalizer(_teardown_session)
    with contextlib.closing(connect()) as conn:
        with conn.cursor() as cursor:
            _create_database(cursor)
            _create_table(cursor)


def _teardown_session():
    with contextlib.closing(connect()) as conn:
        with conn.cursor() as cursor:
Example #9
0
import contextlib
import os
import random
import string

import pytest
from past.builtins.misc import xrange

from pyathena import connect
from tests.util import Env, read_query

ENV = Env()
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
S3_PREFIX = 'test_pyathena'
SCHEMA = 'test_pyathena_' + ''.join([random.choice(
    string.ascii_lowercase + string.digits) for _ in xrange(10)])


@pytest.fixture(scope='session', autouse=True)
def _setup_session(request):
    request.addfinalizer(_teardown_session)
    with contextlib.closing(connect()) as conn:
        with conn.cursor() as cursor:
            _create_database(cursor)
            _create_table(cursor)


def _teardown_session():
    with contextlib.closing(connect()) as conn:
        with conn.cursor() as cursor:
            _drop_database(cursor)