Skip to main content

InterSystems IRIS for SQLAlchemy

Project description

sqlalchemy-iris

An InterSystems IRIS dialect for SQLAlchemy.

Pre-requisites

This dialect requires SQLAlchemy, InterSystems DB-API driver. 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, when run next to IRIS

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

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

Project details


Release history Release notifications | RSS feed

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.19.1b1.tar.gz (39.7 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.19.1b1-py3-none-any.whl (35.4 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_iris-0.19.1b1.tar.gz.

File metadata

  • Download URL: sqlalchemy_iris-0.19.1b1.tar.gz
  • Upload date:
  • Size: 39.7 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.19.1b1.tar.gz
Algorithm Hash digest
SHA256 30ed9f8b6713d4560aa364209a28659f825a45919cfd9d7a45cbeb7724ab3ad6
MD5 da5c65ef04da7a2f20baacccba8bab35
BLAKE2b-256 204deb6eadf55806ef7a63c9b43ff7b085c22981089bc2146ab770b98c554886

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlalchemy_iris-0.19.1b1.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.19.1b1-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlalchemy_iris-0.19.1b1-py3-none-any.whl
Algorithm Hash digest
SHA256 3088839189367ac83d4af7ef21de651974f82583b98d43c51880e5217f5c549d
MD5 71919a59cde574018768cc915255cfd8
BLAKE2b-256 16892b3fde7df1552de133075fbe7aa3f89f9c4b9d27660abc53949ecc493a76

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlalchemy_iris-0.19.1b1-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.

Supported by

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