Skip to content

Releases: piccolo-orm/piccolo

1.13.0

27 Jun 12:28
Compare
Choose a tag to compare

Improved LazyTableReference, to help prevent circular import errors.

1.12.0

19 Jun 17:54
Compare
Choose a tag to compare
  • Added documentation for one to one fields.
  • Upgraded ASGI templates (thanks to @sinisaos for this).
  • Migrations can now be hardcoded as fake.
  • Refactored tests to reduce boilerplate code.
  • Updated documentation dependencies.

1.11.0

15 Jun 20:21
Compare
Choose a tag to compare

Added datetime functions, for example Year:

>>> from piccolo.query.functions import Year
>>> await Concert.select(Year(Concert.starts, alias="starts_year"))
[{'starts_year': 2024}]

Added the Concat function, for concatenating strings:

>>> from piccolo.query.functions import Concat
>>> await Band.select(
...     Concat(
...         Band.name,
...         '-',
...         Band.manager._.name,
...         alias="name_and_manager"
...     )
... )
[{"name_and_manager": "Pythonistas-Guido"}]

1.10.0

14 Jun 11:59
Compare
Choose a tag to compare

Added not_any method for Array columns. This will return rows where an array doesn't contain the given value. For example:

class MyTable(Table):
    array_column = Array(Integer())

>>> await MyTable.select(
...     MyTable.array_column
... ).where(
...     MyTable.array_column.not_any(1)
... )
[{"array_column": [4, 5, 6]}]

Also fixed a bunch of Pylance linter warnings across the codebase.

1.9.0

13 Jun 12:16
Compare
Choose a tag to compare

Added some math functions, for example Abs, Ceil, Floor and Round.

>>> from piccolo.query.functions import Round
>>> await Ticket.select(Round(Ticket.price, alias="price"))
[{'price': 50.0}]

Added more operators to QueryString (multiply, divide, modulus, power), so we can do things like:

>>> await Ticket.select(Round(Ticket.price) * 2)
[{'price': 100.0}]

Fixed some edge cases around defaults for Array columns.

def get_default():
    # This used to fail:
    return [datetime.time(hour=8, minute=0)]

class MyTable(Table):
    times = Array(Time(), default=get_default)

Fixed some deprecation warnings, and improved CockroachDB array tests.

1.8.0

07 Jun 20:59
Compare
Choose a tag to compare

Added the Cast function, for performing type conversion.

Here's an example, where we convert a timestamp to time:

>>> from piccolo.columns import Time
>>> from piccolo.query.functions import Cast

>>> await Concert.select(Cast(Concert.starts, Time()))
[{'starts': datetime.time(19, 0)}]

A new section was also added to the docs describing functions in more detail.

1.7.0

31 May 11:42
Compare
Choose a tag to compare

Arrays of Date / Time / Timestamp / Timestamptz now work in SQLite.

For example:

class MyTable(Table):
    times = Array(Time())
    dates = Array(Date())
    timestamps = Array(Timestamp())
    timestamps_tz = Array(Timestamptz())

1.6.0

30 May 00:06
Compare
Choose a tag to compare

Added support for a bunch of Postgres functions, like Upper, Lower, Length, and Ltrim. They can be used in select queries:

from piccolo.query.functions.string import Upper

>>> await Band.select(Upper(Band.name, alias="name"))
[{"name": "PYTHONISTAS"}]

And also in where clauses:

>>> await Band.select().where(Upper(Band.manager.name) == 'GUIDO')
[{"name": "Pythonistas"}]

1.5.2

28 May 23:03
Compare
Choose a tag to compare

Added an Album table to the playground, along with some other improvements.

Fixed a bug with the output(load_json=True) clause, when used on joined tables.

1.5.1

21 May 11:16
Compare
Choose a tag to compare

Fixed a bug with the CLI when reversing migrations (thanks to @metakot for reporting this).

Updated the ASGI templates (thanks to @tarsil for adding Lilya).