News¶
Contents:
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.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.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. 
- 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().