connector-x icon indicating copy to clipboard operation
connector-x copied to clipboard

Unable to connect to database with space in MSSQL

Open cody-scott opened this issue 6 months ago • 1 comments

What language are you using?

Python

What version are you using?

0.4.2

What database are you using?

MSSQL

What dataframe are you using?

Polars

Can you describe your bug?

Attempting to connect to a database with a space causes a timeout error. Other database on the instance can be connected to without issue.

Have tried wrapping the database in quotes (single/double), encoding the space with %20 and + but same result.

What are the steps to reproduce the behavior?

Database in the instance with a space in the name

If possible, please include a minimal simple example including: mssql://1.2.3.4:1447/MY-DATA BASE?encrypt=true&trust_server_certificate=true&trusted_connection=true

Database setup if the error only happens on specific data or data type

Table schema and example data

Example query / code
connection_string = "mssql://1.2.3.4:1447/MY-DATA BASE?encrypt=true&trust_server_certificate=true&trusted_connection=true"
pl.read_database_uri('SELECT * from dbo.table', connection_string)

What is the error?

Show the error result here.

RuntimeError                              Traceback (most recent call last)
File c:\Users\user\Desktop\jupyter\.venv\Lib\site-packages\polars\io\database\_utils.py:67, in _read_sql_connectorx(query, connection_uri, partition_on, partition_range, partition_num, protocol, schema_overrides)
     [66](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:66)     return_type = "arrow2" if parse_version(cx.__version__) < (0, 4, 2) else "arrow"
---> [67](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:67)     tbl = cx.read_sql(
     [68](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:68)         conn=connection_uri,
     [69](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:69)         query=query,
     [70](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:70)         return_type=return_type,
     [71](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:71)         partition_on=partition_on,
     [72](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:72)         partition_range=partition_range,
     [73](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:73)         partition_num=partition_num,
     [74](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:74)         protocol=protocol,
     [75](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:75)     )
     [76](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:76) except BaseException as err:
     [77](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:77)     # basic sanitisation of /user:pass/ credentials exposed in connectorx errs

File c:\Users\user\Desktop\jupyter\.venv\Lib\site-packages\connectorx\__init__.py:409, in read_sql(conn, query, return_type, protocol, partition_on, partition_range, partition_num, index_col, strategy, pre_execution_query)
    [407](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:407) try_import_module("pyarrow")
--> [409](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:409) result = _read_sql(
    [410](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:410)     conn,
    [411](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:411)     "arrow",
    [412](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:412)     queries=queries,
    [413](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:413)     protocol=protocol,
    [414](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:414)     partition_query=partition_query,
    [415](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:415)     pre_execution_queries=pre_execution_queries,
    [416](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:416) )
    [417](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/connectorx/__init__.py:417) df = reconstruct_arrow(result)

RuntimeError: Timed out in bb8

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
Cell In[32], [line 2](vscode-notebook-cell:?execution_count=32&line=2)
      [1](vscode-notebook-cell:?execution_count=32&line=1) connection_string = "mssql://1.2.3.4:1447/MY-DATA BASE?encrypt=true&trust_server_certificate=true&trusted_connection=true"
----> [2](vscode-notebook-cell:?execution_count=32&line=2) pl.read_database_uri('SELECT * from dbo.table', connection_string)

File c:\Users\user\Desktop\jupyter\.venv\Lib\site-packages\polars\io\database\functions.py:434, in read_database_uri(query, uri, partition_on, partition_range, partition_num, protocol, engine, schema_overrides, execute_options)
    [432](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:432)         msg = "the 'connectorx' engine does not support use of `execute_options`"
    [433](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:433)         raise ValueError(msg)
--> [434](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:434)     return _read_sql_connectorx(
    [435](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:435)         query,
    [436](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:436)         connection_uri=uri,
    [437](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:437)         partition_on=partition_on,
    [438](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/functions.py:438)         partition_range=partition_range,
...
     [78](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:78)     errmsg = re.sub("://[^:]+:[^:]+@", "://***:***@", str(err))
---> [79](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:79)     raise type(err)(errmsg) from err
     [81](file:///C:/Users/user/Desktop/jupyter/.venv/Lib/site-packages/polars/io/database/_utils.py:81) return from_arrow(tbl, schema_overrides=schema_overrides)

RuntimeError: Timed out in bb8

cody-scott avatar Apr 11 '25 16:04 cody-scott