{"library":"oslo-db","title":"Oslo Database Library","description":"oslo.db is an OpenStack project library that provides database connectivity and common utilities for interacting with various SQL database backends (e.g., PostgreSQL, MySQL, SQLite). It simplifies database session management, model definition, and migration processes for OpenStack components. The library is actively maintained, with version 18.0.0 being the latest stable release, and follows the OpenStack release cadence.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install oslo.db","pip install PyMySQL"],"cli":null},"imports":["from oslo_db.sqlalchemy import enginefacade","from oslo_db.sqlalchemy import models","from oslo_db import api as db_api"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom sqlalchemy import Column, Integer, String\nfrom oslo_db.sqlalchemy import enginefacade, models\n\n# Configure a simple SQLite database for demonstration\nos.environ['OSLO_DB_CONNECTION'] = 'sqlite:///./test.sqlite'\n\n# Initialize the enginefacade\nenginefacade.configure(\n    sqlite_synchronous=False # For better performance in SQLite, though less safe\n)\n\n# Define a base model for our application\nclass MyModelBase(models.ModelBase, models.TimestampMixin):\n    __abstract__ = True\n\nclass User(MyModelBase):\n    __tablename__ = 'users'\n    id = Column(Integer, primary_key=True, autoincrement=True)\n    name = Column(String(255), nullable=False)\n    email = Column(String(255), unique=True, nullable=False)\n\n    def __repr__(self):\n        return f\"<User(id='{self.id}', name='{self.name}', email='{self.email}')>\"\n\n# Create tables (usually done via migration tools like Alembic in production)\n# For quickstart, we'll create directly if not exists\nwith enginefacade.transaction() as session:\n    MyModelBase.metadata.create_all(session.bind)\n\n# Example usage: adding and querying data\nclass MyContext:\n    pass\n\n@enginefacade.transaction_context_manager\ndef add_user(context, name, email):\n    new_user = User(name=name, email=email)\n    context.session.add(new_user)\n    print(f\"Added user: {new_user}\")\n    return new_user\n\n@enginefacade.reader_context_manager\ndef get_users(context):\n    users = context.session.query(User).all()\n    print(\"All users:\")\n    for user in users:\n        print(f\"- {user}\")\n    return users\n\nif __name__ == '__main__':\n    # Use a dummy context object, as oslo_db often expects one\n    ctx = MyContext()\n\n    add_user(ctx, \"Alice\", \"alice@example.com\")\n    add_user(ctx, \"Bob\", \"bob@example.com\")\n\n    get_users(ctx)\n\n    # Clean up test.sqlite if it exists\n    if os.path.exists('./test.sqlite'):\n        os.remove('./test.sqlite')\n        print(\"Cleaned up test.sqlite\")\n","lang":"python","description":"This quickstart demonstrates how to configure oslo.db with a SQLite backend, define a basic SQLAlchemy model using `oslo_db.sqlalchemy.models.ModelBase` and `TimestampMixin`, and perform basic CRUD operations using `oslo_db.sqlalchemy.enginefacade.transaction_context_manager` and `reader_context_manager`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"17.4.0","pypi_latest":"18.0.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.3,"avg_import_s":1.26,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"65.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.03,"mem_mb":24.9,"disk_size":"70.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":null,"mem_mb":null,"disk_size":"137M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.8,"import_time_s":0.77,"mem_mb":24.9,"disk_size":"70M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"72.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.57,"mem_mb":27.7,"disk_size":"78.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"143M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.1,"import_time_s":1.39,"mem_mb":27.7,"disk_size":"78M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"62.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.47,"mem_mb":27.3,"disk_size":"78.2M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":null,"mem_mb":null,"disk_size":"134M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6,"import_time_s":1.46,"mem_mb":27.3,"disk_size":"77M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"59.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.57,"mem_mb":27.7,"disk_size":"77.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.4,"import_time_s":null,"mem_mb":null,"disk_size":"133M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"oslo.db","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.3,"import_time_s":1.46,"mem_mb":27.7,"disk_size":"77M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"65.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"oslo.db","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.94,"mem_mb":25.4,"disk_size":"75.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"PyMySQL","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.8,"import_time_s":null,"mem_mb":null,"disk_size":"137M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"oslo.db","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":9.7,"import_time_s":0.9,"mem_mb":25.4,"disk_size":"75M"}]}}