Skip to content

Releases: agronholm/sqlacodegen

4.0.0rc3

07 Feb 18:33
4772a34

Choose a tag to compare

  • BACKWARD INCOMPATIBLE Relationship names changed when multiple FKs or junction tables connect to the same target table. Regenerating models will break existing code.
  • Added support for generating Python enum classes for 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)
  • Improved relationship naming: one-to-many uses FK column names (e.g., 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)
  • Fixed Index kwargs (e.g. mysql_length) being ignored during code generation (PR by @luliangce)

4.0.0rc2

23 Jan 13:40
edb17ec

Choose a tag to compare

  • Add values_callable lambda to generated native enums column definitions. This allows for proper enum value insertion when working with ORM models (PR by @sheinbergon)

4.0.0rc1

18 Jan 11:39
f4619eb

Choose a tag to compare

  • BACKWARD INCOMPATIBLE TablesGenerator.render_column_type() was changed to receive the Column object instead of the column type object as its sole argument
  • Added Python enum generation for native database ENUM types (e.g., PostgreSQL / MySQL ENUM). Retained synthetic Python enum generation from CHECK constraints with IN clauses (e.g., column 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)

3.2.0

29 Nov 20:33
615d79c

Choose a tag to compare

  • Dropped support for Python 3.9 (PR by @agronholm)
  • Fix Postgres DOMAIN adaptation regression introduced in SQLAlchemy 2.0.42 (PR by @sheinbergon)
  • Support disabling special naming logic for single column many-to-one and one-to-one relationships (PR by @Henkhogan, revised by @sheinbergon)
  • Add include_dialect_options option to render Table and Column dialect-specific kwargs and info in generated code. (PR by @jaogoy)
  • Add keep_dialect_types option to preserve dialect-specific column types instead of adapting to generic SQLAlchemy types. (PR by @jaogoy)

3.1.1

04 Sep 09:34
a1f22fc

Choose a tag to compare

  • Fallback NotImplemented errors encountered when accessing python_type for non-native types to typing.Any (PR by @sheinbergon, based on work by @danplischke)

3.1.0

10 Aug 20:45
4b37d5d

Choose a tag to compare

  • Type annotations for ARRAY column attributes now include the Python type of the array elements (PR by @@JoaquimEsteves)
  • Added support for specifying engine arguments via --engine-arg (PR by @LajosCseppento)
  • Fixed incorrect package name used in importlib.metadata.version for sqlalchemy-citext, resolving PackageNotFoundError (PR by @oaimtiaz)
  • Prevent double pluralization (PR by @dkratzert, remedied by @sheinbergon)
  • Fixes DOMAIN extending JSON/JSONB data types (PR by @sheinbergon)
  • Temporarily restrict SQLAlchemy version to 2.0.41 (PR by @sheinbergon)
  • Fixes add_import behavior when adding imports from sqlalchemy and overall better alignment of import behavior(s) across generators (PR by @EthanKim8683)
  • Fixes nullable column behavior for non-null columns for both sqlmodels and declarative generators (PR by @sheinbergon)

3.0.0

28 Feb 13:53

Choose a tag to compare

  • Dropped support for Python 3.8 @agronholm
  • Changed nullable relationships to include Optional in their type annotations @sheinbergon
  • Fixed SQLModel code generation @sheinbergon
  • Fixed two rendering issues in ENUM columns when a non-default schema is used: an unwarranted positional argument and missing the schema argument @agronholm
  • Fixed AttributeError when metadata contains user defined column types @agronholm
  • Fixed AssertionError when metadata contains a column type that is a type decorator with an all-uppercase name @agronholm
  • Fixed MySQL DOUBLE column types being rendered with the wrong arguments @agronholm

3.0.0rc5

22 Feb 08:54

Choose a tag to compare

  • Fixed pgvector support not working

3.0.0rc4

14 Feb 10:30

Choose a tag to compare

  • Dropped support for Python 3.7
  • Dropped support for SQLAlchemy 1.x
  • Added support for the pgvector extension (with help from KellyRousselHoomano)