NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2885 most downloaded on PyPI
Automatic model code generator for SQLAlchemy
Last release 3 months ago
19 Jun 2026
Release timing varies
gaps range from 9 days to 13 months
Some releases are documented
notes for 9 of 23 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
34 releases · first in 2013
Added autoincrement to primary key columns to prevent missing field errors. ( #473 ; PR by @jtmonroe )
ARRAY types (e.g. postgresql.ARRAY) instead of adapting them to the generic sqlalchemy.ARRAY. The generic type does not implement operators like .contains(), so adapting silently broke PostgreSQL array queries on generated models. (#441)Improved rendering of Identity server defaults by explicitly rendering non-default parameters; Decimal values (as returned by some databases) are now
Identity server defaults by explicitly rendering non-default parameters; Decimal values (as returned by some databases) are now cast to int (PR by @NotCarlosSerrano)One column per quarter.
Fixed rendering of inherited keyword arguments for dialect-specific types that use kwargs in their initializers (such as MySQL CHAR with collation ) w
**kwargs in their initializers (such as MySQL CHAR with collation) while preserving existing *args rendering behavior (PR by @hyoj0942)postgresql_include=[]) being included in rendered indexes, tables, and columns (PR by @sheinbergon)Fix enum column definitions to explicitly include schema and name if reflected via SQLAlchemy's Metadata (pr by @sheinbergon )
BACKWARD INCOMPATIBLE API changes (for those who customize code generation by subclassing the existing generators):
explicit_foreign_keys to DeclarativeGenerator, to force foreign keys to be rendered as ClassName.attribute_name string referencesrender_relationship_args() method from the SQLModel generatorDeclarativeGenerator:
render_relationship_annotation(): returns the appropriate type annotation (without the Mapped wrapper) for the relationshiprender_relationship_arguments(): returns a dictionary of keyword arguments to sqlalchemy.orm.relationship()BACKWARD INCOMPATIBLE Relationship names changed when multiple FKs or junction tables connect to the same target table. Regenerating models will break…
ARRAY(Enum(...)) columns (e.g., PostgreSQL ARRAY(ENUM)). Supports named/unnamed enums, shared enums across columns, and multi-dimensional arrays. Respects --options nonativeenums. (PR by @sheinbergon)simple_items_parent_container), many-to-many uses junction table names (e.g., students_enrollments). Use --options nofknames to revert to old behavior. (PR by @sheinbergon)Index kwargs (e.g. mysql_length) being ignored during code generation (PR by @luliangce)Add values_callable lambda to generated native enums column definitions. This allows for proper enum value insertion when working with ORM models (PR
values_callable lambda to generated native enums column definitions. This allows for proper enum value insertion when working with ORM models (PR by @sheinbergon)BACKWARD INCOMPATIBLE TablesGenerator.render_column_type() was changed to receive the Column object instead of the column type object as its sole argu…
TablesGenerator.render_column_type() was changed to receive the Column object instead of the column type object as its sole argumentcolumn IN ('val1', 'val2', ...)). Use --options nonativeenums to disable enum generation for native database enums. Use --options nosyntheticenums to disable enum generation for synthetic database enums (VARCHAR columns with check constraints). (PR by @sheinbergon)Dropped support for Python 3.9 (PR by @agronholm )
DOMAIN adaptation regression introduced in SQLAlchemy 2.0.42 (PR by @sheinbergon)include_dialect_options option to render Table and Column dialect-specific kwargs and info in generated code. (PR by @jaogoy)keep_dialect_types option to preserve dialect-specific column types instead of adapting to generic SQLAlchemy types. (PR by @jaogoy)Fallback NotImplemented errors encountered when accessing python_type for non-native types to typing.Any (PR by @sheinbergon , based on work by @danpl
NotImplemented errors encountered when accessing python_type for non-native types to typing.Any (PR by @sheinbergon, based on work by @danplischke)Type annotations for ARRAY column attributes now include the Python type of the array elements (PR by @@JoaquimEsteves)
Dropped support for Python 3.8 @agronholm
Optional in their type annotations @sheinbergonENUM columns when a non-default schema is used: an unwarranted positional argument and missing the schema argument @agronholmAttributeError when metadata contains user defined column types @agronholmAssertionError when metadata contains a column type that is a type decorator with an all-uppercase name @agronholmDOUBLE column types being rendered with the wrong arguments @agronholmFixed pgvector support not working
Dropped support for SQLAlchemy 1.x
pgvector extension (with help from KellyRousselHoomano)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →