Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

caretdev/sqlalchemy-iris

Repository files navigation

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

AltStyle によって変換されたページ (->オリジナル) /