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.0.tar.gz (58.8 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.0-py3-none-any.whl (65.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sqlalchemy_iris-0.19.0.tar.gz
  • Upload date:
  • Size: 58.8 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.0.tar.gz
Algorithm Hash digest
SHA256 6d3e1806734c0eed32c09606661eaff2f8b5a4c0f7daf6167c72af9616887390
MD5 8672219f9580ddeccc9c73bdd497c47c
BLAKE2b-256 40fa37327727649d5e2258779e6786f0366fdb81ff5e464d64177e73dbcc11f0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for sqlalchemy_iris-0.19.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9f8f87887431ce2de15a97dbbdf809e2fd79957370938ccccac00f803dc2c7e
MD5 df41ac89ff59c95f9213241aab3ea9ae
BLAKE2b-256 c5fcfae29ada17784205390f7fdc02212340768f695c60b49a60f4afcf13ed15

See more details on using hashes here.

Provenance

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

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