Releases: piccolo-orm/piccolo
1.30.0
1.29.0
- Fixed a bug with adding / subtracting
Integercolumns from one another in queries (thanks to @ryanvarley for this). - Updated the ASGI templates, and BlackSheep dependencies (thanks to @sinisaos for this).
- Fixed a bug where decimal values generated by
ModelBuildercould be too large. - Added an example
M2Mrelationship in the playground to make learningM2Measier (thanks to @sinisaos for this). - Added documentation for
MigrationManager.get_table_from_snapshot, which is a way of getting aTablefrom the migration history - useful when running data migrations (thanks to @sinisaos for this). - Columns with the
secret=Trueargument are now added toTable._meta.secret_columns(thanks to @sinisaos for this). - Added documentation for the
migrationtable. - Tidied up Pydantic tests (thanks to @sinisaos for this).
1.28.0
Playground improvements
- Added an
Arraycolumn to the playground (Album.awards), for easier experimentation with array columns. - CoachroachDB is now supported in the playground (thanks to @sinisaos for this).
piccolo playground run --engine=cockroachFunctions
Added lots of useful array functions (thanks to @sinisaos for this).
Here's an example, where we can easily fix a typo in an array using replace:
>>> await Album.update({
... Album.awards: Album.awards.replace('Grammy Award 2021', 'Grammy Award 2022')
... }, force=True)The documentation for functions has also been improved (e.g. how to create a custom function).
The Cast function is now more flexible.
Array concantenation
Values can be prepended:
>>> await Album.update({
... Album.awards: ['Grammy Award 2020'] + Album.awards
... }, force=True)And multiple arrays can be concatenated in one go:
>>> await Album.update({
... Album.awards: ['Grammy Award 2020'] + Album.awards + ['Grammy Award 2025']
... }, force=True)is_in and not_in sub queries
You can now use sub queries within is_in and not_in Thanks to @sinisaos for this.
>>> await Band.select().where(
... Band.id.is_in(
... Concert.select(Concert.band_1).where(
... Concert.starts >= datetime.datetime(year=2025, month=1, day=1)
... )
... )
... )Other improvements
- Auto convert a default value of
0to0.0inFloatcolumns. - Modernised the type hints throughout the codebase (e.g. using
listinstead oftyping.List). Thanks to @sinisaos for this. - Fixed a bug with auto migrations, where the
Arraybase column class wasn't being imported. - Improved M2M query performance by using sub selects (thanks to @sinisaos for this).
1.27.1
1.27.0
1.26.1
Updated the BlackSheep ASGI template - thanks to @sinisaos for this.
Fixed a bug with auto migrations when a ForeignKey specifies target_column - multiple primary key columns were added to the migration file. Thanks to @waldner for reporting this issue.
Added a tutorial for moving tables between Piccolo apps - thanks to @sarvesh4396 for this.
1.26.0
1.25.0
Improvements to Piccolo app creation. When running the following:
piccolo app new my_appIt now validates that the app name (my_app in this case) is valid as a Python package.
Also, there is now a --register flag, which automatically adds the new app to the APP_REGISTRY in piccolo_conf.py.
piccolo app new my_app --registerOther changes:
1.24.2
Fixed a bug with delete queries which have joins in the where clause. For example:
>>> await Band.delete().where(Band.manager.name == 'Guido')Thanks to @HakierGrzonzo for reporting the issue, and @sinisaos for the fix.