def __init__( self, dsn=None, user=None, password=None, role=None, host=None, database=None, charset=DEFAULT_CHARSET, port=None, page_size=4096, is_services=False, cloexec=False, timeout=None, isolation_level=None, use_unicode=None, auth_plugin_name=None, wire_crypt=True, create_new=False, timezone=None ): DEBUG_OUTPUT("Connection::__init__()") if auth_plugin_name is None: auth_plugin_name = 'Srp256' WireProtocol.__init__(self) self.sock = None self.db_handle = None (self.hostname, self.port, self.filename, self.user, self.password) = parse_dsn(dsn, host, port, database, user, password) self.role = role self.charset = charset self.timeout = float(timeout) if timeout is not None else None self.auth_plugin_name = auth_plugin_name self.wire_crypt = wire_crypt self.page_size = page_size self.is_services = is_services if isolation_level is None: self.isolation_level = ISOLATION_LEVEL_READ_COMMITED else: self.isolation_level = int(isolation_level) self.use_unicode = use_unicode self.timezone = timezone self.last_event_id = 0 self._autocommit = False self._transaction = None self.sock = SocketStream(self.hostname, self.port, self.timeout, cloexec) self._op_connect(auth_plugin_name, wire_crypt) try: self._parse_connect_response() except OperationalError as e: self.sock.close() self.sock = None raise e if create_new: # create database self._op_create(self.page_size) elif self.is_services: # service api self._op_service_attach() else: # connect self._op_attach() (h, oid, buf) = self._op_response() self.db_handle = h
def __init__( self, dsn=None, user=None, password=None, role=None, host=None, database=None, charset=DEFAULT_CHARSET, port=3050, page_size=4096, is_services=False, cloexec=False, timeout=None, isolation_level=None, use_unicode=None, auth_plugin_name=None, wire_crypt=True, create_new=False ): DEBUG_OUTPUT("Connection::__init__()") if auth_plugin_name is None: auth_plugin_name = 'Srp' WireProtocol.__init__(self) self.sock = None self.db_handle = None if dsn: i = dsn.find(':') if i < 0: self.hostname = host self.filename = dsn else: hostport = dsn[:i] self.filename = dsn[i+1:] i = hostport.find('/') if i < 0: self.hostname = hostport else: self.hostname = hostport[:i] port = int(hostport[i+1:]) else: self.hostname = host self.filename = database if self.hostname is None: self.hostname = 'localhost' self.port = port self.user = user self.password = password self.role = role self.charset = charset self.timeout = float(timeout) if timeout is not None else None self.auth_plugin_name = auth_plugin_name self.wire_crypt = wire_crypt self.page_size = page_size self.is_services = is_services if isolation_level is None: self.isolation_level = ISOLATION_LEVEL_READ_COMMITED else: self.isolation_level = int(isolation_level) self.use_unicode = use_unicode self.last_event_id = 0 self._autocommit = False self._transaction = None self.sock = SocketStream(self.hostname, self.port, self.timeout, cloexec) self._op_connect(auth_plugin_name, wire_crypt) try: self._op_accept() except OperationalError as e: self.sock.close() self.sock = None raise e if create_new: # create database self._op_create(self.page_size) elif self.is_services: # service api self._op_service_attach() else: # connect self._op_attach() (h, oid, buf) = self._op_response() self.db_handle = h