Beispiel #1
0
    def _get_options_with_defaults(url):
        user_options = url.translate_connect_args(username='******',
                                                  password='******',
                                                  database='exaschema',
                                                  host='destination')
        user_options.update(url.query)

        options = {key.lower(): value for (key, value) in DEFAULT_CONNECTION_PARAMS.items()}
        options.update({key.lower(): value for (key, value) in DEFAULT_TURBODBC_PARAMS.items()})
        for key in user_options.keys():
            options[key.lower()] = user_options[key]

        real_turbodbc = __import__('turbodbc')
        turbodbc_options = {}
        for param in ('read_buffer_size', 'parameter_sets_to_buffer', 'use_async_io'):
            if param in options:
                raw = options.pop(param)
                if param == 'use_async_io':
                    value = util.asbool(raw)
                elif param == 'read_buffer_size':
                    value = real_turbodbc.Megabytes(util.asint(raw))
                else:
                    value = util.asint(raw)
                turbodbc_options[param] = value

        options['turbodbc_options'] = real_turbodbc.make_options(**turbodbc_options)

        return options
    def _get_options_with_defaults(url):
        user_options = url.translate_connect_args(username='******',
                                                  password='******',
                                                  database='exaschema',
                                                  host='destination')
        user_options.update(url.query)

        options = {key.lower(): value for (key, value) in DEFAULT_CONNECTION_PARAMS.items()}
        options.update({key.lower(): value for (key, value) in DEFAULT_TURBODBC_PARAMS.items()})
        for key in user_options.keys():
            options[key.lower()] = user_options[key]

        real_turbodbc = __import__('turbodbc')
        turbodbc_options = {}
        for param in TURBODBC_TRANSLATED_PARAMS:
            if param in options:
                raw = options.pop(param)
                if param in {'use_async_io', 'prefer_unicode',
                             'large_decimals_as_64_bit_types',
                             'limit_varchar_results_to_max',
                             'autocommit'}:
                    value = util.asbool(raw)
                elif param == 'read_buffer_size':
                    value = real_turbodbc.Megabytes(util.asint(raw))
                else:
                    value = util.asint(raw)
                turbodbc_options[param] = value

        options['turbodbc_options'] = real_turbodbc.make_options(**turbodbc_options)

        return options
Beispiel #3
0
    def _get_options_with_defaults(url):
        user_options = url.translate_connect_args(username='******',
                                                  password='******',
                                                  database='exaschema',
                                                  host='destination')
        user_options.update(url.query)

        options = {key.lower(): value for (key, value) in DEFAULT_CONNECTION_PARAMS.items()}
        options.update({key.lower(): value for (key, value) in DEFAULT_TURBODBC_PARAMS.items()})
        for key in user_options.keys():
            options[key.lower()] = user_options[key]

        real_turbodbc = __import__('turbodbc')
        turbodbc_options = {}
        for param in TURBODBC_TRANSLATED_PARAMS:
            if param in options:
                raw = options.pop(param)
                if param in {'use_async_io', 'prefer_unicode',
                             'large_decimals_as_64_bit_types',
                             'limit_varchar_results_to_max',
                             'autocommit'}:
                    value = util.asbool(raw)
                elif param == 'read_buffer_size':
                    value = real_turbodbc.Megabytes(util.asint(raw))
                else:
                    value = util.asint(raw)
                turbodbc_options[param] = value

        options['turbodbc_options'] = real_turbodbc.make_options(**turbodbc_options)

        return options
Beispiel #4
0
    def create_connect_args(self, url):
        """Create the connect args for Turbodbc.

        Some code adapted from the Pyodbc connector in the SQLAlchemy
        codebase.
        """

        options = url.translate_connect_args(username='******')

        query = url.query
        options.update(query)

        connect_args = {}

        # first get the Turbodbc specific options
        turbodbc_options = {}
        for param in ('read_buffer_size', 'parameter_sets_to_buffer',
                      'use_async_io', 'autocommit',
                      'large_decimals_as_64_bit_types'):
            if param in options:
                raw = options.pop(param)
                if param in ('use_async_io', 'autocommit',
                             'large_decimals_as_64_bit_types'):
                    value = util.asbool(raw)
                else:
                    value = util.asint(raw)
                turbodbc_options[param] = value

        # we always need to set prefer_unicode=True for MSSQL + Turbodbc
        connect_args['turbodbc_options'] = make_options(prefer_unicode=True,
                                                        **turbodbc_options)
        for param in ('ansi', 'unicode_results'):
            if param in options:
                connect_args[param] = util.asbool(options.pop(param))

        dsn_connection = 'dsn' in options or \
            ('host' in options and 'database' not in options)
        if dsn_connection:
            dsn = [options.pop('host', '') or options.pop('dsn', '')]
        else:
            dsn = []
            port = ''
            if 'port' in options and 'port' not in query:
                port = int(options.pop('port'))

            driver = options.pop('driver', None)
            if driver is None:
                util.warn(
                    "No driver name specified; "
                    "this is expected by ODBC when using "
                    "DSN-less connections")
            else:
                connect_args['driver'] = driver

            connect_args.update(
                server=(options.pop('host', '')),
                port=port,
                database=options.pop('database', '')
            )

        user = options.pop('user', None)
        if user:
            connect_args.update(
                uid=user,
                pwd=options.pop('password', '')
            )
        else:
            connect_args['trusted_connection'] = 'Yes'

        return [dsn, connect_args]