Piccolo

Latest version: v1.5.0

Safety actively analyzes 627711 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 48

0.105.0

Not secure
-------

Improved the performance of select queries with complex joins. Many thanks to
powellnorma and sinisaos for their help with this.

-------------------------------------------------------------------------------

0.104.0

Not secure
-------

Major improvements to Piccolo's typing / auto completion support.

For example:

.. code-block:: python

>>> bands = await Band.objects() List[Band]

>>> band = await Band.objects().first() Optional[Band]

>>> bands = await Band.select().output(as_json=True) str

-------------------------------------------------------------------------------

0.103.0

Not secure
-------

``SelectRaw``
~~~~~~~~~~~~~

This allows you to access features in the database which aren't exposed
directly by Piccolo. For example, Postgres functions:

.. code-block:: python

from piccolo.query import SelectRaw

>>> await Band.select(
... Band.name,
... SelectRaw("log(popularity) AS log_popularity")
... )
[{'name': 'Pythonistas', 'log_popularity': 3.0}]

Large fixtures
~~~~~~~~~~~~~~

Piccolo can now load large fixtures using ``piccolo fixtures load``. The
rows are inserted in batches, so the database adapter doesn't raise any errors.

-------------------------------------------------------------------------------

0.102.0

Not secure
-------

Migration file names
~~~~~~~~~~~~~~~~~~~~

The naming convention for migrations has changed slightly. It used to be just
a timestamp - for example:

.. code-block:: text

2021-09-06T13-58-23-024723.py

By convention Python files should start with a letter, and only contain
``a-z``, ``0-9`` and ``_``, so the new format is:

.. code-block:: text

my_app_2021_09_06T13_58_23_024723.py

.. note:: You can name a migration file anything you want (it's the ``ID``
value inside it which is important), so this change doesn't break anything.

Enhanced Pydantic configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

We now expose all of Pydantic's configuration options to
``create_pydantic_model``:

.. code-block:: python

class MyPydanticConfig(pydantic.BaseConfig):
extra = 'forbid'

model = create_pydantic_model(
table=MyTable,
pydantic_config_class=MyPydanticConfig
)

Thanks to waldner for this.

Other changes
~~~~~~~~~~~~~

* Fixed a bug with ``get_or_create`` and null columns (thanks to powellnorma
for reporting this issue).
* Updated the Starlite ASGI template, so it uses the latest syntax for mounting
Piccolo Admin (thanks to sinisaos for this, and the Starlite team).

-------------------------------------------------------------------------------

0.101.0

Not secure
-------

``piccolo fixtures load`` is now more intelligent about how it loads data, to
avoid foreign key constraint errors.

-------------------------------------------------------------------------------

0.100.0

Not secure
-------

``Array`` columns now support choices.

.. code-block:: python

class Ticket(Table):
class Extras(str, enum.Enum):
drink = "drink"
snack = "snack"
program = "program"

extras = Array(Varchar(), choices=Extras)

We can then use the ``Enum`` in our queries:

.. code-block:: python

>>> await Ticket.insert(
... Ticket(extras=[Extras.drink, Extras.snack]),
... Ticket(extras=[Extras.program]),
... )

This will also be supported in Piccolo Admin in the next release.

-------------------------------------------------------------------------------

Page 7 of 48

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.