iLibrary - Tools for IBM i library
Project description
iLibrary
A lightweight Python helper for working with IBM i (AS/400) libraries. It connects via ODBC (pyodbc) for DB2/SQL queries and uses Paramiko for SSH/SFTP to save and transfer library save files (SAVF).
Overview
- Query library metadata using QSYS2 services
- List objects in a library (and optionally source physical files)
- Create a save file (SAVF) for a library via SAVLIB and optionally download it
- Remove save files
- Simple context manager to handle DB connection lifecycle
Requirements
- Python 3.8+
- IBM i system access
- IBM i Access ODBC Driver (or compatible) installed locally
- Network access to the IBM i for ODBC and SSH/SFTP
Installation
- From PyPI:
pip install iLibrary - From source:
- Clone the repo
- Optionally create and activate a virtual environment
- pip install -r requirements.txt
- pip install -e .
Quickstart
from os.path import join, dirname
import os
from dotenv import load_dotenv
from iLibrary import Library
# Load ENV file and get the connection settings
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
DB_DRIVER = os.environ.get("DB_DRIVER")
DB_USER = os.environ.get("DB_USER")
DB_PASSWORD = os.environ.get("DB_PASSWORD")
DB_SYSTEM = os.environ.get("DB_SYSTEM")
with Library(DB_USER, DB_PASSWORD, DB_SYSTEM, DB_DRIVER) as lib:
print(lib.getLibraryInfo('QGPL', wantJson=True))
print(lib.getFileInfo('QGPL'))
Save a library to SAVF and optionally download it
from os.path import dirname
with Library(DB_USER, DB_PASSWORD, DB_SYSTEM, DB_DRIVER) as lib:
ok = lib.saveLibrary(
library='MYLIB',
saveFileName='MYLIBSAVE',
description='Backup',
localPath=dirname(__file__),
remPath='/home/MYUSER/',
getZip=True
)
print('Saved:', ok)
API overview
- Library(db_user, db_password, db_host, db_driver)
- enter / exit for connection lifecycle
- iclose(): manually close the connection
- getLibraryInfo(library: str, wantJson: bool = True) -> str | tuple
- getFileInfo(library: str, qFiles: bool = False) -> str
- saveLibrary(library: str, saveFileName: str, ..., getZip: bool = False, ...) -> bool
- removeFile(library: str, saveFileName: str) -> bool
Configuration
- Environment variables expected:
- DB_DRIVER: e.g. {IBM i Access ODBC Driver}
- DB_USER
- DB_PASSWORD
- DB_SYSTEM
Documentation
- Installation guide: [[docs/installation.md]]
- Usage examples: [[docs/usage.md]]
- Full API reference: [[docs/api.md]]
- Troubleshooting: [[docs/troubleshooting.md]]
Contributing
- Please run tests or the sample script before submitting changes.
License
- See the repository license file if present.
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 Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ilibrary-0.0.7-py3-none-any.whl.
File metadata
- Download URL: ilibrary-0.0.7-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76c4646f06555fa1246394ab1c391cf30d89bf56928ab02fefbba86e1ea0e559
|
|
| MD5 |
f4e4a1d0a8c3eff19f93d356abbdefa7
|
|
| BLAKE2b-256 |
1334f150b2103042bcf9998bd3284f871e5e887b9735f6e62becf3b91af4b0c6
|