Skip to main content

SQLAlchemy support for Db2 on IBM i

Project description

SQLAlchemy adapter for IBM i

Latest version released on PyPi Supported Python Version Badge Documentation Status

The IBM i SQLAlchemy adapter provides an SQLAlchemy interface to Db2 for IBM i.

Please note that this project is still under active development. Please report any bugs in the issue tracker :rotating_light:

Requirements

SQLAlchemy

SQLAlchemy Version Supported Notes
SQLAlchemy 2.0 Support added in 0.9.4.
SQLAlchemy 1.4 Support added in 0.9.3.
SQLAlchemy 1.3 Support removed in 0.9.4.

Python

Python 3.10+ is supported.

IBM i Access ODBC Driver

It is best to use the latest version of the driver, which is currently available in the IBM i Access Client Solutions Application Package 1.1.0.30.

Some options may require certain minimum driver versions to be enabled. Because the driver ignores any unknown options, using them on older driver versions will not cause an error but instead be silently ignored.

Connection Option Required Version
trim_char_fields 1.1.0.25

IBM i

This adapter is only tested against IBM i 7.5 and up. It may support older IBM i releases, but no support is guaranteed.

Installation

pip install sqlalchemy-ibmi

Getting Started

You will need to have the IBM i Access ODBC Driver installed in order to use this adapter. Please read these docs for the simplest way to install for your platform.

import sqlalchemy as sa
engine = sa.create_engine("ibmi://user:password@host.example.com")

cnxn = engine.connect()
metadata = sa.MetaData()
table = sa.Table('table_name', metadata, autoload=True, autoload_with=engine)

query = sa.select([table])

result = cnxn.execute(query)
result = result.fetchall()

# print first entry
print(result[0])

For more details on connection options, check our docs

If you're new to SQLAlchemy, please refer to the SQLAlchemy Unified Tutorial.

Documentation

The documentation for the SQLAlchemy adapter for IBM i can be found at: https://sqlalchemy-ibmi.readthedocs.io/en/latest/

Known Limitations

  1. Non-standard SQL queries are not supported. e.g. "SELECT ? FROM TAB1"
  2. For updations involving primary/foreign key references, the entries should be made in correct order. Integrity check is always on and thus the primary keys referenced by the foreign keys in the referencing tables should always exist in the parent table.
  3. Unique key which contains nullable column not supported
  4. UPDATE CASCADE for foreign keys not supported
  5. DEFERRABLE INITIALLY deferred not supported
  6. Subquery in ON clause of LEFT OUTER JOIN not supported

Contributing to the IBM i SQLAlchemy adapter

Please read the contribution guidelines.

The developer sign-off should include the reference to the DCO in remarks(example below):
DCO 1.1 Signed-off-by: Random J Developer <random@developer.org>

Releasing a New Version

# checkout and pull the latest code from main
git checkout main
git pull

# install package and dependencies
poetry install

# bump to a release version (a tag and commit are made)
poetry run -- bump-my-version bump release

# To skip a release candidate
poetry run -- bump-my-version bump --no-tag --no-commit release
poetry run -- bump-my-version bump --allow-dirty release

# bump to the new dev version (a commit is made)
poetry run -- bump-my-version bump --no-tag patch

# push the new tag and commits
git push origin main --tags

License

Apache 2.0

Credits

  • ibm_db_sa for SQLAlchemy was first produced by IBM Inc., targeting version 0.4.
  • The library was ported for version 0.6 and 0.7 by Jaimy Azle.
  • Port for version 0.8 and modernization of test suite by Mike Bayer.
  • Port for sqlalchemy-ibmi by Naveen Ram/Korinne Adler.

Project details


Download files

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

Source Distribution

sqlalchemy_ibmi-0.9.4rc2.tar.gz (31.4 kB view details)

Uploaded Source

Built Distribution

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

sqlalchemy_ibmi-0.9.4rc2-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_ibmi-0.9.4rc2.tar.gz.

File metadata

  • Download URL: sqlalchemy_ibmi-0.9.4rc2.tar.gz
  • Upload date:
  • Size: 31.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sqlalchemy_ibmi-0.9.4rc2.tar.gz
Algorithm Hash digest
SHA256 dc89ff27e2e3af1e427d7f436ff8aa6423de578ac07035e84fd7803c8124c4dd
MD5 556559b3a26d36989e76fca381b6cc7a
BLAKE2b-256 3f0e625b1deb13b60dfff4f9d0f3a5c1d29984a71b452f80288c59b2e4e27ca1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlalchemy_ibmi-0.9.4rc2.tar.gz:

Publisher: release.yml on IBM/sqlalchemy-ibmi

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_ibmi-0.9.4rc2-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlalchemy_ibmi-0.9.4rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 131ac3e1f50c5e16f3a57a645413e89cad6e0f07b7450bd3286a01773096c168
MD5 a0baa95e3e046dca89aaddb3d80a2273
BLAKE2b-256 771c3a8946a878c73e69b28677f2be85f89ec4e7ea87c71d54360a5aa7c254bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlalchemy_ibmi-0.9.4rc2-py3-none-any.whl:

Publisher: release.yml on IBM/sqlalchemy-ibmi

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