{"library":"sqlalchemy-mixins","title":"SQLAlchemy Mixins","type":"library","description":"SQLAlchemy Mixins provides an Active Record pattern, Django-like query methods, nested eager loading, and enhanced `__repr__` for SQLAlchemy models. It aims to simplify common ORM operations by adding convenient class methods. The current stable version is 2.0.5, with releases occurring semi-regularly as features and fixes are added.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install sqlalchemy-mixins"],"cli":null},"imports":["from sqlalchemy_mixins import ActiveRecordMixin","from sqlalchemy_mixins import InspectionMixin"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/absent1706/sqlalchemy-mixins","docs":null,"changelog":null,"pypi":"https://pypi.org/project/sqlalchemy-mixins/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"from sqlalchemy import create_engine, Column, Integer, String\nfrom sqlalchemy.orm import sessionmaker, declarative_base\nfrom sqlalchemy_mixins import ActiveRecordMixin\nimport os\n\n# Setup SQLAlchemy engine and session (using in-memory sqlite for example)\n# For a real app, you might get this from an environment variable\ndatabase_url = os.environ.get('DATABASE_URL', 'sqlite:///test.db')\nengine = create_engine(database_url)\nSession = sessionmaker(bind=engine)\nsession = Session()\n\n# Define the declarative base for models\nBase = declarative_base()\n\n# Define a User model inheriting from Base and ActiveRecordMixin\nclass User(Base, ActiveRecordMixin):\n    __tablename__ = 'users'\n    id = Column(Integer, primary_key=True)\n    name = Column(String)\n    email = Column(String, unique=True)\n\n    def __repr__(self):\n        return f\"<User(id={self.id}, name='{self.name}')>\"\n\n# Create database tables\nBase.metadata.create_all(engine)\n\n# Set the session for ActiveRecordMixin for this model\nUser.set_session(session)\n\n# --- Usage Examples ---\n\n# 1. Create a new user (commit=True is available from v2.0.5)\nuser1 = User.create(name='Alice', email='alice@example.com', commit=True)\nprint(f\"Created user: {user1}\")\n\n# 2. Find a user by ID\nfound_user = User.find(user1.id)\nprint(f\"Found user by ID: {found_user}\")\n\n# 3. Find a user by attributes (Django-like filter)\nfiltered_user = User.where(name='Alice').first()\nprint(f\"Found user by name: {filtered_user}\")\n\n# 4. Update a user\nuser1.update(name='Alicia', commit=True)\nprint(f\"Updated user: {user1}\")\n\n# 5. Get all users\nall_users = User.all()\nprint(f\"Total users: {len(all_users)}\")\n\n# 6. Delete a user\nuser1.delete(commit=True)\nprint(f\"User {user1.name} deleted.\")\n\n# Clean up and close the session\nsession.close()\n","lang":"python","description":"This quickstart demonstrates how to set up `ActiveRecordMixin` with a SQLAlchemy declarative model. It covers common CRUD operations (create, find, update, delete) using the mixin's class methods, as well as basic query filtering. It highlights the use of `commit=True` which simplifies transaction management from version 2.0.5 onwards.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"2.0.5","pypi_latest":"2.0.5","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.2,"avg_import_s":0.86,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.73,"mem_mb":21,"disk_size":"42.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.53,"mem_mb":21,"disk_size":"41M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.02,"mem_mb":23.5,"disk_size":"47.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":0.9,"mem_mb":23.5,"disk_size":"46M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.07,"mem_mb":23.6,"disk_size":"39.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":1.04,"mem_mb":23.5,"disk_size":"38M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.03,"mem_mb":23,"disk_size":"38.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.98,"mem_mb":23,"disk_size":"37M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.66,"mem_mb":20.1,"disk_size":"41.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sqlalchemy-mixins","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.59,"mem_mb":20.1,"disk_size":"41M"}]}}