News

SQLObject 0.10.9

  • The cache culling algorithm was enhanced to eliminate memory leaks by removing references to dead objects; tested on a website that runs around 4 million requests a day.

SQLObject 0.10.8

Released 30 Sep 2009.

  • Fixed a bug in logging to console - convert unicode to str.
  • Fixed an obscure bug in ConnectionHub triggered by an SQLObject class whose instances can be coerced to boolean False.

SQLObject 0.10.7

Released 20 Sep 2009.

  • Fixed a bug: Sybase tables with identity column fire two identity_inserts.
  • Fixed a bug: q.startswith(), q.contains() and q.endswith() escape (with a backslash) all special characters (backslashes, underscores and percent signs).

SQLObject 0.10.6

Released 18 May 2009.

  • Better support for Python 2.6: do not import the deprecated sets module.
  • A number of changes ported from SQLObject 0.9.11.

SQLObject 0.10.5

Released 6 May 2009.

  • A number of changes ported from SQLObject 0.9.10.
  • sqlmeta.getColumns() becomes classmethod.

SQLObject 0.10.4

Released 8 Dec 2008.

  • Fixed createSQL constrains generation under MySQL when the table’s name includes the database’s name (contains a dot).

SQLObject 0.10.3

Released 1 Dec 2008.

SQLObject 0.10.2

Released 30 May 2008.

SQLObject 0.10.1

Released 4 May 2008.

  • Fixed a bug: limit doesn’t work in sqlbuilder.Select.
  • A number of changes ported from SQLObject 0.9.6.

SQLObject 0.10.0

Released 11 Mar 2008.

Features & Interface

  • Dropped support for Python 2.2. The minimal version of Python for SQLObject is 2.3 now.
  • Removed actively deprecated attributes; lowered deprecation level for other attributes to be removed after 0.10.
  • SQLBuilder Select supports the rest of SelectResults options (reversed, distinct, joins, etc.)
  • SQLObject.select() (i.e., SelectResults) and DBConnection.queryForSelect() use SQLBuilder Select queries; this make all SELECTs implemented internally via a single mechanism.
  • SQLBuilder Joins handle SQLExpression tables (not just str/SQLObject/Alias) and properly sqlrepr.
  • Added SQLBuilder ImportProxy. It allows one to ignore the circular import issues with referring to SQLObject classes in other files - it uses the classregistry as the string class names for FK/Joins do, but specifically intended for SQLBuilder expressions. See tests/test_sqlbuilder_importproxy.py.
  • Added SelectResults.throughTo. It allows one to traverse relationships (FK/Join) via SQL, avoiding the intermediate objects. Additionally, it’s a simple mechanism for pre-caching/eager-loading of later FK relationships (i.e., going to loop over a select of somePeople and ask for aPerson.group, first call list(somePeople.throughTo.group) to preload those related groups and use 2 db queries instead of N+1). See tests/test_select_through.py.
  • Added ViewSQLObject.
  • Added sqlmeta.getColumns() to get all the columns for a class (including parent classes), excluding the column ‘childName’ and including the column ‘id’. sqlmeta.asDict() now uses getColumns(), so there is no need to override it in the inheritable sqlmeta class; this makes asDict() to work properly on inheritable sqlobjects.
  • Allow MyTable.select(MyTable.q.foreignKey == object) where object is an instance of SQLObject.
  • Added rich comparison methods; SQLObjects of the same class are considered equal is they have the same id; other methods return NotImplemented.
  • RowDestroySignal is sent on destroying an SQLObject instance; postfunctions are run after the row has been destroyed.
  • Changed the implementation type in BoolCol under SQLite from TINYINT to BOOLEAN and made fromDatabase machinery to recognize it.
  • MySQLConnection (and DB URI) accept a number of SSL-related parameters: ssl_key, ssl_cert, ssl_ca, ssl_capath.
  • Use sets instead of dicts in tablesUsed. Dropped tablesUsedDict function; instead there is tablesUsedSet that returns a set of strings.
  • SQLBuilder tablesUsedSet handles sqlrepr’able objects.
  • Under MySQL, PickleCol no longer used TEXT column types; the smallest column is now BLOB - it is not possible to create TINYBLOB column.

SQLObject 0.9.11

Released 18 May 2009.

  • Two bugs in SQLiteConnection.columnsFromSchema() were fixed: use sqlmeta.idName instead of ‘id’; convert default ‘NULL’ to None.
  • Use sqlmeta.idName instead of ‘id’ in all connection classes.
  • Fixed a bug that prevented to override per class _connection if there is sqlhub.processConnection.

SQLObject 0.9.10

Released 6 May 2009.

  • Another unicode-related patch for MySQL; required because different versions of MySQLdb require different handling:

    - MySQLdb < 1.2.1: only ascii
    - MySQLdb = 1.2.1: only unicode
    - MySQLdb > 1.2.1: both ascii and unicode
    
  • Setup requires FormEncode version 1.1.1+.

  • A minor bug was fixed in creating a DecimalValidator - pass the column name to it.

  • A bug was fixed in InheritableIteration - pass connection to child klass.select().

  • A bug was fixed in PostgresConnection.columnsFromSchema() - foreign keys are now recognized and created as proper ForeignKey with correct column name and table name.

  • Bugs in PostgresConnection and MSSQLConnection related to properties was fixed. A note for developers: from now on properties in DBConnection classes are forbidden as they don’t work with Transaction - Transaction.__getattr__() cannot properly wrap ‘self’ so a property is called with wrong ‘self’.

  • Transaction instances now explicitly raises TypeError on close() - without this calling Transaction.close() calls connection.close() which is wrong.

  • A bug in SQLiteConnection.columnsFromSchema() that led to an infinite loop was fixed.

SQLObject 0.9.9

  • Backported from the trunk: under MySQL use the connection’s dbEncoding instead of ascii, when converting a unicode value from python to database for a StringCol.

SQLObject 0.9.8

Released 1 Dec 2008.

  • Changed interpretation of strings in the DB URI for boolean parameters: ‘0’, ‘no’, ‘off’ and ‘false’ are now interpreted as False.
  • Fixed a bug with incorrect handling of calls like connectionForURI(dburi, cache=False) when dburi already contains some parameters in the URI.
  • Convert decimal.to_eng_string() to str to work around a bug in Python 2.5.2; see https://mail.python.org/pipermail/python-dev/2008-March/078189.html
  • Added test_default_style.py.
  • Fixed a minor bug in SQLiteConnection that fails to parse Enum columns.

SQLObject 0.9.7

Released 30 May 2008.

Small Features

  • Use VARCHAR(MAX) and VARBINARY(MAX) for MSSQL >= 9.0.
  • Run post_funcs after RowDestroySignal.

Bug Fixes

  • Fixed a minor bug in Set column.
  • A bug fixed for RowCreatedSignal together with InheritableSQLObject: run post_funcs after the entire hierarchy has been created.
  • Aggregate functions now honors ‘distinct’.

SQLObject 0.9.6

Released 4 May 2008.

  • A bug in inheritable delColumn() that doesn’t remove properties was fixed.
  • A minor bug was fixed in col.py - the registry must be passed to findClass().
  • Reverted the patch declarative.threadSafeMethod() - it causes more harm then good.

SQLObject 0.9.5

Released 10 Mar 2008.

  • Fixed a minor bug in SQLiteConnection.columnsFromSchema() - set dbName.
  • A bug in delColumn() that removes all properties was fixed by recreating properties.

SQLObject 0.9.4

Released 3 Mar 2008.

  • Use list.reverse() in manager/command.py for Python 2.2 compatibility.
  • Prevent MultipleJoin from removing the intermediate table if it was not created by the Join.
  • Fixed a bug with no default when defaultSQL is defined for the column.
  • Recognize POINT data type as string in PostgresConnection.columnsFromSchema().

SQLObject 0.9.3

Released 10 Jan 2008.

  • A number of changes ported from SQLObject 0.7.10.

SQLObject 0.9.2

Released 30 Oct 2007.

  • Fixed a bug in Versioning - do not copy “alternateID” and “unique” attributes from the versioned table.
  • Fixed a misspelled ‘zerofill’ option’s name.
  • Fixed bugs in SQLiteConnection.guessColumn().
  • A number of changes ported from SQLObject 0.7.9 and SQLObject 0.8.6.

SQLObject 0.9.1

Released 25 July 2007.

Bug Fixes

  • Fixed misspelled methods in col.py.
  • A number of bugfixes ported from SQLObject 0.7.8 and SQLObject 0.8.5.

SQLObject 0.9.0

Released 10 May 2007.

Features & Interface

  • Support for Python 2.2 has been declared obsolete.
  • Removed actively deprecated attributes; lowered deprecation level for other attributes to be removed after 0.9.
  • SQLite connection got columnsFromSchema(). Now all connections fully support fromDatabase. There are two version of columnsFromSchema() for SQLite - one parses the result of “SELECT sql FROM sqlite_master” and the other uses “PRAGMA table_info”; the user can choose one over the other by using “use_table_info” parameter in DB URI; default is False as the pragma is available only in the later versions of SQLite.
  • Changed connection.delColumn(): the first argument is sqlmeta, not tableName (required for SQLite).
  • SQLite connection got delColumn(). Now all connections fully support delColumn(). As SQLite backend doesn’t implement “ALTER TABLE DROP COLUMN” delColumn() is implemented by creating a new table without the column, copying all data, dropping the original table and renaming the new table.
  • Versioning.
  • MySQLConnection got new keyword “conv” - a list of custom converters.
  • Use logging if it’s available and is configured via DB URI.
  • New columns: TimestampCol to support MySQL TIMESTAMP type; SetCol to support MySQL SET type; TinyIntCol for TINYINT; SmallIntCol for SMALLINT; MediumIntCol for MEDIUMINT; BigIntCol for BIGINT.

Small Features

  • Support for MySQL INT type attributes: UNSIGNED, ZEROFILL.
  • Support for DEFAULT SQL attribute via defaultSQL keyword argument.
  • cls.tableExists() as a shortcut for conn.tableExists(cls.sqlmeta.table).
  • cls.deleteMany(), cls.deleteBy().

Bug Fixes

  • idName can be inherited from the parent sqlmeta class.

Older news

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