Beispiel #1
0
    def test_escape_args(self):
        escaper = common.ParamEscaper()
        self.assertEqual(escaper.escape_args({'foo': 'bar'}),
                         {'foo': "'bar'"})
        self.assertEqual(escaper.escape_args({'foo': 123}),
                         {'foo': 123})
        self.assertEqual(escaper.escape_args({'foo': 123.456}),
                         {'foo': 123.456})
        self.assertEqual(escaper.escape_args({'foo': ['a', 'b', 'c']}),
                         {'foo': "('a','b','c')"})
        self.assertEqual(escaper.escape_args({'foo': ('a', 'b', 'c')}),
                         {'foo': "('a','b','c')"})
        self.assertIn(escaper.escape_args({'foo': {'a', 'b'}}),
                      ({'foo': "('a','b')"}, {'foo': "('b','a')"}))
        self.assertIn(escaper.escape_args({'foo': frozenset(['a', 'b'])}),
                      ({'foo': "('a','b')"}, {'foo': "('b','a')"}))

        self.assertEqual(escaper.escape_args(('bar',)),
                         ("'bar'",))
        self.assertEqual(escaper.escape_args([123]),
                         (123,))
        self.assertEqual(escaper.escape_args((123.456,)),
                         (123.456,))
        self.assertEqual(escaper.escape_args((['a', 'b', 'c'],)),
                         ("('a','b','c')",))
        self.assertEqual(escaper.escape_args((['你好', 'b', 'c'],)),
                         ("('你好','b','c')",))
        self.assertEqual(escaper.escape_args((datetime.date(2020, 4, 17),)),
                         ("'2020-04-17'",))
        self.assertEqual(escaper.escape_args((datetime.datetime(2020, 4, 17, 12, 0, 0, 123456),)),
                         ("'2020-04-17 12:00:00.123456'",))
Beispiel #2
0
    def test_escape_args(self):
        escaper = common.ParamEscaper()
        self.assertEqual(escaper.escape_args({'foo': 'bar'}), {'foo': "'bar'"})
        self.assertEqual(escaper.escape_args({'foo': 123}), {'foo': 123})
        self.assertEqual(escaper.escape_args({'foo': 123.456}),
                         {'foo': 123.456})
        self.assertEqual(escaper.escape_args({'foo': ['a', 'b', 'c']}),
                         {'foo': "('a','b','c')"})
        self.assertEqual(escaper.escape_args({'foo': ('a', 'b', 'c')}),
                         {'foo': "('a','b','c')"})
        self.assertIn(escaper.escape_args({'foo': {'a', 'b'}}),
                      ({
                          'foo': "('a','b')"
                      }, {
                          'foo': "('b','a')"
                      }))
        self.assertIn(escaper.escape_args({'foo': frozenset(['a', 'b'])}),
                      ({
                          'foo': "('a','b')"
                      }, {
                          'foo': "('b','a')"
                      }))

        self.assertEqual(escaper.escape_args(('bar', )), ("'bar'", ))
        self.assertEqual(escaper.escape_args([123]), (123, ))
        self.assertEqual(escaper.escape_args((123.456, )), (123.456, ))
        self.assertEqual(escaper.escape_args((['a', 'b', 'c'], )),
                         ("('a','b','c')", ))
        self.assertEqual(escaper.escape_args((['你好', 'b', 'c'], )),
                         ("('你好','b','c')", ))
Beispiel #3
0
from pyhive import common
from pyhive.common import DBAPITypeObject
# Make all exceptions visible in this module per DB-API
from pyhive.exc import *
import getpass
import logging
import requests
import urlparse

# PEP 249 module globals
apilevel = '2.0'
threadsafety = 2  # Threads may share the module and connections.
paramstyle = 'pyformat'  # Python extended format codes, e.g. ...WHERE name=%(name)s

_logger = logging.getLogger(__name__)
_escaper = common.ParamEscaper()


def connect(*args, **kwargs):
    """Constructor for creating a connection to the database. See class :py:class:`Connection` for
    arguments.

    :returns: a :py:class:`Connection` object.
    """
    return Connection(*args, **kwargs)


class Connection(object):
    """Presto does not have a notion of a persistent connection.

    Thus, these objects are small stateless factories for cursors, which do all the real work.