SQLAlchemy adapter for IBM i
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 1.3 | ✅ | Most tested. |
SQLAlchemy 1.4 | ✅ | Preliminary support added in 0.9.3. |
SQLAlchemy 2.0+ | ❌ | Currently not supported, but planned for 0.9.4. |
Python
Python 3.6 - 3.11 are supported. Support for Python 3.12 and
up is currently broken.
NOTE: sqlalchemy-ibmi 0.9.3 is the last version to support Python 3.6.
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.27.
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.3 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(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
- Non-standard SQL queries are not supported. e.g. "SELECT ? FROM TAB1"
- 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.
- Unique key which contains nullable column not supported
- UPDATE CASCADE for foreign keys not supported
- DEFERRABLE INITIALLY deferred not supported
- 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
git checkout main
git pull
bumpversion release
bumpversion --no-tag --no-commit release
bumpversion --allow-dirty release
bumpversion --no-tag patch
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/Kevin Adler.