connector-x
connector-x copied to clipboard
Unable to connect to database with space in MSSQL
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