Connection URL from Python to IRIS
I read the article by @Rodolfo Pscheidt Jr:
https://community.intersystems.com/post/ollama-ai-iris
I forked his app and copied selected files from @Guillaume Rongier iris-rag-demo to make it containerized:
ollama-ai-iris/test_conn.py at 3da62770a90e34eff92241abbfc4f2c2a7027898 · oliverwilms/ollama-ai-iris
I struggle to understand what each element is or I do not understand why the code does not work:
url = f"iris://teste:teste@localhost:51774/TESTE"
Is teste:teste refer to username / password? I tried _SYSTEM:SYS
Is 51774 webserver port? Is TESTE namespace?
I tried both webserver and superserver port and both failed.
Comments
I think I interpreted data correctly and I am using superserver port.
irisowner@e10968e4da42:/irisdev/app$ python3 test_conn.py
Traceback (most recent call last):
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/dbapi/_DBAPI.py", line 50, in connect
return native_connect(
^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/_IRISNative.py", line 183, in connect
connection._connect(hostname, port, namespace, username, password, timeout, sharedmemory, logfile, sslcontext, autoCommit, isolationLevel, featureOptions, application_name)
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/_IRISConnection.py", line 304, in _connect
raise e
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/_IRISConnection.py", line 203, in _connect
self._device.connect(server_address)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/_Device.py", line 31, in connect
return self._socket.connect(server_address)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3298, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 713, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 179, in _do_get
with util.safe_reraise():
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 177, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 390, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 675, in __init__
self.__connect()
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 901, in __connect
with util.safe_reraise():
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 897, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 646, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 625, in connect
return self.loaded_dbapi.connect(*cargs, **cparams) # type: ignore[no-any-return] # NOQA: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/dbapi/_DBAPI.py", line 58, in connect
raise OperationalError(e)
intersystems_iris.dbapi._DBAPI.OperationalError: [Errno 111] Connection refused
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/irisdev/app/test_conn.py", line 5, in <module>
with engine.connect() as conn:
^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3274, in connect
return self._connection_cls(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 148, in __init__
Connection._handle_dbapi_exception_noconnection(
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2439, in _handle_dbapi_exception_noconnection
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
self._dbapi_connection = engine.raw_connection()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3298, in raw_connection
return self.pool.connect()
^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1264, in _checkout
fairy = _ConnectionRecord.checkout(pool)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 713, in checkout
rec = pool._do_get()
^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 179, in _do_get
with util.safe_reraise():
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 177, in _do_get
return self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 390, in _create_connection
return _ConnectionRecord(self)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 675, in __init__
self.__connect()
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 901, in __connect
with util.safe_reraise():
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 897, in __connect
self.dbapi_connection = connection = pool._invoke_creator(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 646, in connect
return dialect.connect(*cargs, **cparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 625, in connect
return self.loaded_dbapi.connect(*cargs, **cparams) # type: ignore[no-any-return] # NOQA: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/irisowner/.local/lib/python3.12/site-packages/intersystems_iris/dbapi/_DBAPI.py", line 58, in connect
raise OperationalError(e)
sqlalchemy.exc.OperationalError: (intersystems_iris.dbapi._DBAPI.OperationalError) [Errno 111] Connection refused
(Background on this error at: https://sqlalche.me/e/20/e3q8)
The correct line is:
url = f"iris://_SYSTEM:SYS@localhost:1972/IRISAPP"
I need to use container internal superserver port 1972.
Not sure if its much help, but here is some traps I found that may help explain the connection strings.
https://community.intersystems.com/post/access-iris-database-odbc-or-jd…