News

SQLObject 3.11.0

Features

  • Continue working on SQLRelatedJoin aliasing introduced in 3.10.2. When a table joins with itself calling relJoinCol.filter(thisClass.q.column) raises ValueError hinting that an alias is required for filtering.
  • Test that idType is either int or str.
  • Added sqlmeta.idSize. This sets the size of integer column id for MySQL and PostgreSQL. Allowed values are 'TINY', 'SMALL', 'MEDIUM', 'BIG', None; default is None. For Postgres mapped to smallserial/serial/bigserial. For other backends it’s currently ignored. Feature request by Meet Gujrathi at https://stackoverflow.com/q/77360075/7976758

SQLObject 3.10.3

Released 2023 Oct 25.

Bug fixes

  • Relaxed aliasing in SQLRelatedJoin introduced in 3.10.2 - aliasing is required only when the table joins with itself. When there’re two tables to join aliasing prevents filtering – wrong SQL is generated in relJoinCol.filter(thisClass.q.column).

Drivers

  • Fix(SQLiteConnection): Release connections from threads that are no longer active. This fixes memory leak in multithreaded programs in Windows.

    SQLite requires different connections per thread so SQLiteConnection creates and stores a connection per thread. When a thread finishes its connections should be closed. But if a program doesn’t cooperate and doesn’t close connections at the end of a thread SQLObject leaks memory as connection objects are stuck in SQLiteConnection. On Linux the leak is negligible as Linux reuses thread IDs so new connections replace old ones and old connections are garbage collected. But Windows doesn’t reuse thread IDs so old connections pile and never released. To fix the problem SQLiteConnection now enumerates threads and releases connections from non-existing threads.

  • Dropped supersqlite. It seems abandoned. The last version 0.0.78 was released in 2018.

Tests

  • Run tests with Python 3.12.

CI

  • GHActions: Ensure pip only if needed

    This is to work around a problem in conda with Python 3.7 - it brings in wrong version of setuptools incompatible with Python 3.7.

SQLObject 3.10.2

Released 2023 Aug 09.

Minor features

  • Class Alias grows a method .select() to match SQLObject.select().

Bug fixes

  • Fixed a bug in SQLRelatedJoin in the case where the table joins with itself; in the resulting SQL two instances of the table must use different aliases.

CI

  • Install all Python and PyPy versions from conda-forge.

SQLObject 3.10.1

Released 2022 Dec 22.

Minor features

  • Use module_loader.exec_module(module_loader.create_module()) instead of module_loader.load_module() when available.

Drivers

  • Added mysql-connector-python.

Tests

  • Run tests with Python 3.11.

CI

  • Ubuntu >= 22 and setup-python dropped Pythons < 3.7. Use conda via s-weigand/setup-conda instead of setup-python to install older Pythons on Linux.

SQLObject 3.10.0

Released 2022 Sep 20.

Features

  • Allow connections in ConnectionHub to be strings. This allows to open a new connection in every thread.
  • Add compatibility with Pendulum.

Tests

  • Run tests with Python 3.10.

CI

  • GitHub Actions.
  • Stop testing at Travis CI.
  • Stop testing at AppVeyor.

Documentation

  • DevGuide: source code must be pure ASCII.
  • DevGuide: reStructuredText format for docstrings is recommended.
  • DevGuide: de-facto good commit message format is required: subject/body/trailers.
  • DevGuide: conventional commit format for commit message subject lines is recommended.
  • DevGuide: Markdown format for commit message bodies is recommended.
  • DevGuide: commit messages must be pure ASCII.

Older news

Get SQLObject at SourceForge.net. Fast, secure and Free Open Source software downloads