Skip to main content

sqlalchemy-iris

An InterSystems IRIS dialect for SQLAlchemy.

Pre-requisites

This dialect requires SQLAlchemy, InterSystems DB-API driver, and iris-embedded-python-wrapper. They are specified as requirements so pip will install them if they are not already in place. To install, just:

pip install sqlalchemy-iris

Or to use InterSystems official driver support

pip install sqlalchemy-iris[intersystems]

Usage

In your Python app, you can connect to the database via:

from sqlalchemy import create_engine
engine = create_engine("iris://_SYSTEM:SYS@localhost:1972/USER")

To use with Python Embedded mode through iris-embedded-python-wrapper, when run next to IRIS

from sqlalchemy import create_engine
engine = create_engine("iris+emb://USER")

The legacy path form iris+emb:///USER is also supported.

To use with InterSystems official driver, does not work in Python Embedded mode

from sqlalchemy import create_engine
engine = create_engine("iris+intersystems://_SYSTEM:SYS@localhost:1972/USER")

IRIS Cloud SQL requires SSLContext

url = engine.URL.create(
    drivername="iris",
    host=host,
    port=443,
    username='SQLAdmin',
    password=password,
    database='USER',
)

sslcontext = ssl.create_default_context(cafile="certificateSQLaaS.pem")

engine = create_engine(url, connect_args={"sslcontext": sslcontext})

InterSystems IRIS

You can run your instance of InterSystems IRIS Community Edition with Docker

docker run -d --name iris \
 -p 1972:1972 \
 -p 52773:52773 \
 -e IRIS_USERNAME=_SYSTEM \
 -e IRIS_PASSWORD=SYS \
 intersystemsdc/iris-community:preview

Examples

IRISVector

from sqlalchemy import Column, MetaData, Table, select
from sqlalchemy.sql.sqltypes import Integer, UUID
from sqlalchemy_iris import IRISVector
from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase
import uuid

DATABASE_URL = "iris://_SYSTEM:SYS@localhost:1972/USER"
engine = create_engine(DATABASE_URL, echo=False)

# Create a table metadata
metadata = MetaData()


def main():
    demo_table = Table(
        "demo_table",
        metadata,
        Column("id", Integer, primary_key=True, autoincrement=True),
        Column("uuid", UUID),
        Column("embedding", IRISVector(item_type=float, max_items=3)),
    )

    demo_table.drop(engine, checkfirst=True)
    demo_table.create(engine, checkfirst=True)
    with engine.connect() as conn:
        conn.execute(
            demo_table.insert(),
            [
                {"uuid": uuid.uuid4(), "embedding": [1, 2, 3]},
                {"uuid": uuid.uuid4(), "embedding": [2, 3, 4]},
            ],
        )
        conn.commit()
        result = conn.execute(
            demo_table.select()
        ).fetchall()
        print("result", result)


main()

Port 1972 is used for binary communication (this driver, xDBC and so on), and 52773 is for web (Management Portal, IRIS based web-applications and API's).

The System Management Portal is available by URL: http://localhost:52773/csp/sys/UtilHome.csp

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlalchemy_iris-0.20.0.tar.gz (41.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlalchemy_iris-0.20.0-py3-none-any.whl (36.8 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_iris-0.20.0.tar.gz.

File metadata

  • Download URL: sqlalchemy_iris-0.20.0.tar.gz
  • Upload date:
  • Size: 41.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sqlalchemy_iris-0.20.0.tar.gz
Algorithm Hash digest
SHA256 d12f4e3f9f72ebbd271e8f2ce7be68d24fa8e519e3d00369ab206ebd91196aee
MD5 0224b55d4346d49956d2755aff89ea07
BLAKE2b-256 53afcc51e2adb81630ae9099370c3466789afa65ad40ffbee16d72a054675b1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlalchemy_iris-0.20.0.tar.gz:

Publisher: python-publish.yml on caretdev/sqlalchemy-iris

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlalchemy_iris-0.20.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlalchemy_iris-0.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8697f5ccdf2a52c0a6731cc2633a4c2286a4cb3dd74429226e0e66de107e7e68
MD5 2444f2ad12cc74d035d50c6064249915
BLAKE2b-256 b9510df817269cc8a1a78e66def5fb697ec8d48bdd43d324bce6c861aeca2ed6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlalchemy_iris-0.20.0-py3-none-any.whl:

Publisher: python-publish.yml on caretdev/sqlalchemy-iris

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page