- update to 3.17.6:
* Fix bug in recursive `model.delete_instance()` when a table
contains foreign-keys at multiple depths of the graph
* Fix regression in pool behavior on systems where
`time.time()` returns identical values for two connections.
This adds a no-op comparable sentinel to the heap to prevent
any recurrence of this problem.
* Ensure that subqueries inside `CASE` statements generate
correct SQL.
* Fix regression that broke server-side cursors with Postgres
* Fix to ensure compatibility with psycopg3 - the libpq
TransactionStatus constants are no longer available on the
`Connection` instance.
* Fix quoting issue in pwiz that could generate invalid python
code for double-quoted string literals used as column defaults.
OBS-URL: https://build.opensuse.org/request/show/1198059
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-peewee?expand=0&rev=29
* Fix bug in recursive `model.delete_instance()` when a table
contains foreign-keys at multiple depths of the graph
* Fix regression in pool behavior on systems where
`time.time()` returns identical values for two connections.
This adds a no-op comparable sentinel to the heap to prevent
any recurrence of this problem.
* Ensure that subqueries inside `CASE` statements generate
correct SQL.
* Fix regression that broke server-side cursors with Postgres
* Fix to ensure compatibility with psycopg3 - the libpq
TransactionStatus constants are no longer available on the
`Connection` instance.
* Fix quoting issue in pwiz that could generate invalid python
code for double-quoted string literals used as column defaults.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=58
- update to 3.17.5:
* Fixes package installation issue on 3.12 and newer introduced
in the last version.
- update to 3.17.4:
* Fix bug that could occur when using CASE inside a function,
and one or more of the CASE clauses consisted of a subquery.
Refs #2873. new fix in #2872 for regression in truthiness of
cursor.
* Fix bug in the conversion of TIMESTAMP type in Sqlite on
Python 3.12+.
* Fix for hybrid properties on subclasses when aliased (#2888).
* Many fixes for SqliteQueueDatabase (#2874, #2876, #2877).
OBS-URL: https://build.opensuse.org/request/show/1179078
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-peewee?expand=0&rev=28
* Fixes package installation issue on 3.12 and newer introduced
in the last version.
- update to 3.17.4:
* Fix bug that could occur when using CASE inside a function,
and one or more of the CASE clauses consisted of a subquery.
Refs #2873. new fix in #2872 for regression in truthiness of
cursor.
* Fix bug in the conversion of TIMESTAMP type in Sqlite on
Python 3.12+.
* Fix for hybrid properties on subclasses when aliased (#2888).
* Many fixes for SqliteQueueDatabase (#2874, #2876, #2877).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=56
- Update to 3.17.1:
* Add bitwise and other helper methods to `BigBitField`, #2802.
* Add `add_column_default` and `drop_column_default` migrator methods for
specifying a server-side default value, #2803.
* The new `star` attribute was causing issues for users who had a field named
star on their models. This attribute is now renamed to `__star__`. #2796.
* Fix compatibility issues with 3.12 related to utcnow() deprecation.
* Add stricter locking on connection pool to prevent race conditions.
* Add adapters and converters to Sqlite to replace ones deprecated in 3.12.
* Fix bug in `model_to_dict()` when only aliases are present.
* Fix version check for Sqlite native drop column support.
* Do not specify a `reconnect=` argument to `ping()` if using MySQL 8.x.
OBS-URL: https://build.opensuse.org/request/show/1146064
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-peewee?expand=0&rev=26
* Add bitwise and other helper methods to `BigBitField`, #2802.
* Add `add_column_default` and `drop_column_default` migrator methods for
specifying a server-side default value, #2803.
* The new `star` attribute was causing issues for users who had a field named
star on their models. This attribute is now renamed to `__star__`. #2796.
* Fix compatibility issues with 3.12 related to utcnow() deprecation.
* Add stricter locking on connection pool to prevent race conditions.
* Add adapters and converters to Sqlite to replace ones deprecated in 3.12.
* Fix bug in `model_to_dict()` when only aliases are present.
* Fix version check for Sqlite native drop column support.
* Do not specify a `reconnect=` argument to `ping()` if using MySQL 8.x.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=52
- update to 3.17.0:
* Only roll-back in the outermost `@db.transaction`
decorator/ctx manager if an unhandled exception occurs.
* Cover transaction `BEGIN` in the reconnect-mixin. Given that
no transaction has been started, reconnecting when beginning
a new transaction ensures that a reconnect will occur if it
is safe to do so.
* Add support for setting `isolation_level` in `db.atomic()`
and `db.transaction()` when using Postgres and MySQL/MariaDB,
which will apply to the wrapped transaction.
* Add support for the Sqlite `SQLITE_DETERMINISTIC` function
flag. This allows user-defined Sqlite functions to be used
in indexes and may be used by the query planner.
* Fix unreported bug in dataset import when inferred field name
differs from column name.
- disable apsw from tests for sle15 - can't be build anymore
- unbind to cython < 3
- bind to cython < 3
- Update to 3.15.4
Fix bug in test_utils.count_queres() which could erroneously include pool events such as connect/disconnect, etc.
set to `None`.
- switch to PyMSQL instead of mysql-connector-python, which is the
* This will be a notable release as it adds support for CockroachDB,
* Fix non-deterministic join ordering issue when using the filter()
* Bulk insert (insert_many() and insert_from()) will now return
* Migration extension now supports altering a column's data-type,
* Added BloomFilter.from_buffer() method for populating a bloom-filter
* Fix for issue #1991 regarding setting intervening models to None.
OBS-URL: https://build.opensuse.org/request/show/1124001
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-peewee?expand=0&rev=24
* Only roll-back in the outermost `@db.transaction`
decorator/ctx manager if an unhandled exception occurs.
* Cover transaction `BEGIN` in the reconnect-mixin. Given that
no transaction has been started, reconnecting when beginning
a new transaction ensures that a reconnect will occur if it
is safe to do so.
* Add support for setting `isolation_level` in `db.atomic()`
and `db.transaction()` when using Postgres and MySQL/MariaDB,
which will apply to the wrapped transaction.
* Add support for the Sqlite `SQLITE_DETERMINISTIC` function
flag. This allows user-defined Sqlite functions to be used
in indexes and may be used by the query planner.
* Fix unreported bug in dataset import when inferred field name
differs from column name.
- disable apsw from tests for sle15 - can't be build anymore
- unbind to cython < 3
- bind to cython < 3
- Update to 3.15.4
Fix bug in test_utils.count_queres() which could erroneously include pool events such as connect/disconnect, etc.
set to `None`.
- switch to PyMSQL instead of mysql-connector-python, which is the
* This will be a notable release as it adds support for CockroachDB,
* Fix non-deterministic join ordering issue when using the filter()
* Bulk insert (insert_many() and insert_from()) will now return
* Migration extension now supports altering a column's data-type,
* Added BloomFilter.from_buffer() method for populating a bloom-filter
* Fix for issue #1991 regarding setting intervening models to None.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=48
- Update to 3.16.3
- Support for Cython 3.0.
- Add flag to ManyToManyField to prevent setting/getting values
on unsaved instances. This is worthwhile, since reading or
writing a many-to-many has no meaning when the instance is unsaved.
- Adds a star() helper to Source base-class for selecting all columns.
- Fix missing binary types for mysql-connector and mariadb-connector.
- Add extract() method to MySQL JSONField for extracting a jsonpath.
- Add %{?sle15_python_module_pythons}
- unbind to cython < 3
OBS-URL: https://build.opensuse.org/request/show/1104939
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=46
* Fixes a longstanding issue with thread-safety of various
decorators, including `atomic()`, `transaction()`,
`savepoint()`. The context-managers are unaffected.
* Add changes required for building against Cython 3.0 and set
Cython language-level to 3.
* Ensure indexes aren't added to unindexed fields during
introspection, #2691.
* Ensure we don't redundantly select same PK in prefetch when
using PREFETCH_TYPE.JOIN.
* In Sqlite migrator, use Sqlite's builtin DROP and RENAME
column facilities when possible. This can be overridden
by passing `legacy=True` flag.
* This release contains backwards-incompatible changes in the
way Peewee initializes connections to the underlying
database driver. Previously, peewee implemented autocommit
semantics *on-top* of the existing DB-API transactional
workflow. Going forward, Peewee instead places the DB-API
driver into autocommit mode directly.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=42
- Update to 3.15.4
Raise an exception in ReconnectMixin if connection is lost while inside a transaction (if the transaction was interrupted presumably some changes were lost and explicit intervention is needed).
Add db.Model property to reduce boilerplate.
Add support for running prefetch() queries with joins instead of subqueries (this helps overcome a MySQL limitation about applying LIMITs to a subquery).
Add SQL AVG to whitelist to avoid coercing by default.
Allow arbitrary keywords in metaclass constructor, #2627
Add a pyproject.toml to silence warnings from newer pips when wheel package is not available.
This release has a small helper for reducing boilerplate in some cases by exposing a base model class as an attribute of the database instance.
# old:
db = SqliteDatabase('...')
class BaseModel(Model):
class Meta:
database = db
class MyModel(BaseModel):
pass
# new:
db = SqliteDatabase('...')
class MyModel(db.Model):
pass
OBS-URL: https://build.opensuse.org/request/show/1039675
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=40
- Update to 3.15.3
Add scalars() query method (complements scalar()), roughly equivalent to writing [t[0] for t in query.tuples()].
Small doc improvements
Fix and remove some flaky test assertions with Sqlite INSERT + RETURNING.
Fix innocuous failing Sqlite test on big-endian machines.
View commits
- Update to 3.15.2
Fix bug where field-specific conversions were being applied to the pattern used for LIKE / ILIKE operations. Refs #2609
Fix possible infinite loop when accidentally invoking the __iter__ method on certain Column subclasses. Refs #2606
Add new helper for specifying which Model a particular selected column-like should be bound to, in queries with joins that select from multiple sources.
View commits
- Update to 3.15.1
Fix issue introduced in Sqlite 3.39.0 regarding the propagation of column subtypes in subqueries.
Fix bug where cockroachdb server version was not set when beginning a transaction on an unopened database.
View commits
- Update to 3.15.0
Rollback behavior change in commit ab43376697 (GH #2026). Peewee will no longer automatically return the cursor rowcount for certain bulk-inserts.
This should only affect users of MySQL and Sqlite who relied on a bulk INSERT returning the rowcount (as opposed to the cursor's lastrowid).
The rowcount behavior is still available chaining the as_rowcount() method:
# NOTE: this change only affects MySQL or Sqlite.
db = MySQLDatabase(...)
# Previously, bulk inserts of the following forms would return the rowcount.
query = User.insert_many(...) # Bulk insert.
query = User.insert_from(...) # Bulk insert (INSERT INTO .. SELECT FROM).
# Previous behavior (peewee 3.12 - 3.14.10):
# rows_inserted = query.execute()
# New behavior:
last_id = query.execute()
# To get the old behavior back:
rows_inserted = query.as_rowcount().execute()
OBS-URL: https://build.opensuse.org/request/show/1008036
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=36
- Update to 3.14.10:
- Add shortcut for conditional insert using sub-select
- Add convenience left_outer_join() method to query.
- Add selected_columns property to Select queries.
- Add name property to Alias instances.
- Fix regression in tests introduced by change to DataSet in
3.14.9.
- Allow calling table_exists() with a model-class, refs
- Improve is_connection_usable() method of MySQLDatabase class.
- Better support for VIEWs with playhouse.dataset.DataSet and
sqlite-web.
- Support INSERT / ON CONFLICT in playhosue.kv for newer
Sqlite.
- Add ArrayField.contained_by() method, a corollary to
contains() and the contains_any() methods.
- Support cyclical foreign-key relationships in
reflection/introspection, and also for sqlite-web.
- Add magic methods for FTS5 field to optimize, rebuild and
integrity check the full-text index.
- Add fallbacks in setup.py in the event distutils is not
available.
OBS-URL: https://build.opensuse.org/request/show/970473
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=34
- update to 3.14.8:
* Returning clause can still be specified for Sqlite, however it just needs
to be done so manually rather than having it applied automatically.
* Fix bug in APSW extension with Sqlite 3.35 and newer, due to handling of
last insert rowid with RETURNING. Refs #2479.
* Fix pesky bug in new `last_insert_id()` on the `SqliteExtDatabase`.
* Only raise `DoesNotExist` when `lazy_load` is enabled on ForeignKeyField
* Add missing convenience method `ModelSelect.get_or_none()`
* Allow `ForeignKeyField` to specify a custom `BackrefAccessorClass`
* Ensure foreign-key-specific conversions are applied on INSERT and UPDATE
* Add handling of MySQL error 4031 (inactivity timeout) to the `ReconnectMixin`
helper class.
* Support specification of conflict target for ON CONFLICT/DO NOTHING.
* Add `encoding` parameter to the DataSet `freeze()` and `thaw()` methods
* Fix bug which prevented `DeferredForeignKey` from being used as a model's
primary key
* Ensure foreign key's related object cache is cleared when the foreign-key is
set to `None`.
* Allow specification of `(schema, table)` to be used with CREATE TABLE AS...
* Allow reusing open connections with DataSet
* Add `highlight()` and `snippet()` helpers to Sqlite `SearchField`, for use
with full-text search extension.
* Preserve user-provided aliases in column names.
* Add support for Sqlite 3.37 strict tables.
* Ensure database is inherited when using `ThreadSafeDatabaseMetadata`, and
also adds an implementation in `playhouse.shortcuts` along with basic unit
tests.
* Better handling of Model's dirty fields when saving, fixes#2466.
* Add basic support for MariaDB connector driver in `playhouse.mysql_ext`
* Begin a basic implementation for a psycopg3-compatible pg database
OBS-URL: https://build.opensuse.org/request/show/931290
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-peewee?expand=0&rev=16
* Returning clause can still be specified for Sqlite, however it just needs
to be done so manually rather than having it applied automatically.
* Fix bug in APSW extension with Sqlite 3.35 and newer, due to handling of
last insert rowid with RETURNING. Refs #2479.
* Fix pesky bug in new `last_insert_id()` on the `SqliteExtDatabase`.
* Only raise `DoesNotExist` when `lazy_load` is enabled on ForeignKeyField
* Add missing convenience method `ModelSelect.get_or_none()`
* Allow `ForeignKeyField` to specify a custom `BackrefAccessorClass`
* Ensure foreign-key-specific conversions are applied on INSERT and UPDATE
* Add handling of MySQL error 4031 (inactivity timeout) to the `ReconnectMixin`
helper class.
* Support specification of conflict target for ON CONFLICT/DO NOTHING.
* Add `encoding` parameter to the DataSet `freeze()` and `thaw()` methods
* Fix bug which prevented `DeferredForeignKey` from being used as a model's
primary key
* Ensure foreign key's related object cache is cleared when the foreign-key is
set to `None`.
* Allow specification of `(schema, table)` to be used with CREATE TABLE AS...
* Allow reusing open connections with DataSet
* Add `highlight()` and `snippet()` helpers to Sqlite `SearchField`, for use
with full-text search extension.
* Preserve user-provided aliases in column names.
* Add support for Sqlite 3.37 strict tables.
* Ensure database is inherited when using `ThreadSafeDatabaseMetadata`, and
also adds an implementation in `playhouse.shortcuts` along with basic unit
tests.
* Better handling of Model's dirty fields when saving, fixes#2466.
* Add basic support for MariaDB connector driver in `playhouse.mysql_ext`
* Begin a basic implementation for a psycopg3-compatible pg database
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=33
- Update to version 3.14.4
* Bugfix release
- Update to version 3.14.3
* This release contains a single fix for ensuring NULL values
are inserted when issuing a bulk-insert of heterogeneous
dictionaries which may be missing explicit NULL values.
- Update to version 3.14.2
* Support for named Check and foreign-key constraints.
* Better foreign-key introspection for CockroachDB (and Postgres)
* Register UUID adapter for Postgres.
* Add fn.array_agg() to blacklist for automatic value coercion.
- Update to version 3.14.1
Changes
* Properly delegate to a foreign-key field's db_value() function
when converting model instances.
* Strip quote marks and parentheses from column names returned
by sqlite cursor when a function-call is projected without an
alias.
* Fix DataSet.create_index() method.
* Fix column-to-model mapping in model-select from subquery
with joins.
* Improvements to foreign-key lazy-loading.
* Preserve and handle CHECK() constraints in Sqlite migrator.
* Add stddev aggregate function to collection of sqlite
user-defined funcs.
- Update to version 3.14.0
* Add an experimental helper,
shortcuts.resolve_multimodel_query(),
for resolving multiple models used in a compound select query.
* Add a lateral() method to select query for use with lateral
OBS-URL: https://build.opensuse.org/request/show/917125
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=32
- update to 3.13.1
* This will be a notable release as it adds support for CockroachDB,
a distributed, horizontally-scalable SQL database.
* Allow FOR UPDATE clause to specify one or more tables (FOR UPDATE OF...).
* Support for Postgres LATERAL join.
* Fix non-deterministic join ordering issue when using the filter()
API across several tables
* Bulk insert (insert_many() and insert_from()) will now return
the row count instead of the last insert ID.
* Migration extension now supports altering a column's data-type,
via the new alter_column_type() method.
* Added BloomFilter.from_buffer() method for populating a bloom-filter
from the output of a previous call to the to_buffer() method.
OBS-URL: https://build.opensuse.org/request/show/784287
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=26
- Update to 3.11.2
* Implement hash interface for Alias instances, allowing them to be used in multi-source queries.
* Workaround for MySQL prior to 8 and MariaDB handling of union queries inside of parenthesized expressions (like IN).
* Be more permissive in letting invalid values be stored in a field whose type is INTEGER or REAL, since Sqlite allows this.
* Fix for issue #1991 regarding setting intervening models to None.
* Fixes the Model._pk and get_id() interfaces so they no longer introduce the possibility of accidentally resolving the FK.
OBS-URL: https://build.opensuse.org/request/show/741068
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=22
- Update to 3.9.6:
* Support nesting the Database instance as a context-manager. The outermost block will handle opening and closing the connection along with wrapping everything in a transaction. Nested blocks will use savepoints.
* Add new session_start(), session_commit() and session_rollback() interfaces to the Database object to support using transactional controls in situations where a context-manager or decorator is awkward.
* Fix error that would arise when attempting to do an empty bulk-insert.
* Set isolation_level=None in SQLite connection constructor rather than afterwards using the setter.
* Add create_table() method to Select query to implement CREATE TABLE AS.
* Cleanup some declarations in the Sqlite C extension.
* Add new example showing how to implement Reddit's ranking algorithm in SQL.
OBS-URL: https://build.opensuse.org/request/show/717890
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-peewee?expand=0&rev=8
* Support nesting the Database instance as a context-manager. The outermost block will handle opening and closing the connection along with wrapping everything in a transaction. Nested blocks will use savepoints.
* Add new session_start(), session_commit() and session_rollback() interfaces to the Database object to support using transactional controls in situations where a context-manager or decorator is awkward.
* Fix error that would arise when attempting to do an empty bulk-insert.
* Set isolation_level=None in SQLite connection constructor rather than afterwards using the setter.
* Add create_table() method to Select query to implement CREATE TABLE AS.
* Cleanup some declarations in the Sqlite C extension.
* Add new example showing how to implement Reddit's ranking algorithm in SQL.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-peewee?expand=0&rev=18