{"library":"sqlacodegen","title":"SQLAlchemy Code Generator","type":"library","description":"sqlacodegen is a command-line tool that automatically generates SQLAlchemy model code from an existing database schema. It introspects tables, columns, types, and relationships, producing Python files ready for use with SQLAlchemy 2.0+. The current version is 4.0.3, and it receives updates as SQLAlchemy evolves.","language":"python","status":"active","last_verified":"Fri May 22","install":{"commands":["pip install sqlacodegen"],"cli":{"name":"sqlacodegen","version":"4.0.3"}},"imports":["from sqlacodegen.codegen import CodeGenerator"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/agronholm/sqlacodegen","docs":null,"changelog":null,"pypi":"https://pypi.org/project/sqlacodegen/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import subprocess\nimport os\nfrom sqlalchemy import create_engine, Column, Integer, String, MetaData, Table\n\n# Create a dummy SQLite database in memory\ndb_url = 'sqlite:///test.db'\nengine = create_engine(db_url)\nmetadata = MetaData()\n\n# Define a simple table\ntable_name = 'users'\nusers_table = Table(\n    table_name,\n    metadata,\n    Column('id', Integer, primary_key=True),\n    Column('name', String(50), nullable=False),\n    Column('email', String(100), unique=True)\n)\n\n# Create the table in the database\nmetadata.create_all(engine)\n\n# Run sqlacodegen as a subprocess\n# For demonstration, we'll print to stdout. Use --outfile to save to a file.\ntry:\n    result = subprocess.run(\n        ['sqlacodegen', db_url],\n        capture_output=True,\n        text=True,\n        check=True\n    )\n    print(\"\\n--- Generated SQLAlchemy Models ---\")\n    print(result.stdout)\n    print(\"-----------------------------------\")\nexcept subprocess.CalledProcessError as e:\n    print(f\"Error running sqlacodegen: {e}\\nStdout: {e.stdout}\\nStderr: {e.stderr}\")\nexcept FileNotFoundError:\n    print(\"Error: sqlacodegen command not found. Please ensure it's installed and in your PATH.\")\nfinally:\n    # Clean up the dummy database file\n    if os.path.exists('test.db'):\n        os.remove('test.db')\n","lang":"python","description":"This quickstart demonstrates how to use `sqlacodegen` to generate SQLAlchemy models from a simple SQLite database. It first creates a dummy database with a 'users' table, then executes the `sqlacodegen` command-line tool via `subprocess`, printing the generated models to the console. For real-world use, you would direct the output to a Python file using the `--outfile` flag.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-22","installed_version":"3.1.1","pypi_latest":"4.0.3","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.5,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sqlacodegen","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":"43.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sqlacodegen","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":3.5,"import_time_s":null,"mem_mb":null,"disk_size":"42M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sqlacodegen","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":"49.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sqlacodegen","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":3.3,"import_time_s":null,"mem_mb":null,"disk_size":"48M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sqlacodegen","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":"40.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sqlacodegen","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":3,"import_time_s":null,"mem_mb":null,"disk_size":"39M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sqlacodegen","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":"39.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sqlacodegen","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":3.1,"import_time_s":null,"mem_mb":null,"disk_size":"38M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sqlacodegen","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":"42.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sqlacodegen","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":4.4,"import_time_s":null,"mem_mb":null,"disk_size":"42M"}]}}