472,364 Members | 2,209 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,364 software developers and data experts.

SQLObject 0.8.0

Hello!

I'm pleased to announce the 0.8.0 release of SQLObject.
What is SQLObject
=================

SQLObject is an object-relational mapper. Your database tables are described
as classes, and rows are instances of those classes. SQLObject is meant to be
easy to use and quick to get started with.

SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, and
Firebird. It also has newly added support for Sybase, MSSQL and MaxDB (also
known as SAPDB).
Where is SQLObject
==================

Site:
http://sqlobject.org

Development:
http://sqlobject.org/devel/

Mailing list:
https://lists.sourceforge.net/mailma...object-discuss

Archives:
http://news.gmane.org/gmane.comp.python.sqlobject

Download:
http://cheeseshop.python.org/pypi/SQLObject/0.8.0

News and changes:
http://sqlobject.org/News.html
What's New
==========

News since 0.7
--------------

Features & Interface
--------------------

* It is now possible to create tables that reference each other.
Constraints (in the DBMSes that support constraints) are added after the
tables have been created.

* Added ``createSQL`` as an option for sqlmeta. Here you can add
related SQL you want executed by sqlobject-admin create after table
creation. createSQL expects a string, list, or dictionary. If using
a dictionary the key should be a dbName value (ex. 'postgres') and
the value should be a string or list. Examples in
sqlobject/tests/test_sqlobject_admin.py or at
<http://sqlobject.org/sqlobject-admin.html#the-create-command>

* Added method ``sqlhub.doInTransaction(callable, *args, **kwargs)``,
to be used like::

sqlhub.doInTransaction(process_request, os.environ)

This will run ``process_request(os.environ)``. The return
value will be preserved.

* Added method ``.getOne([default])`` to ``SelectResults`` (these are
the objects returned by ``.select()`` and ``.selectBy()``). This
returns a single object, when the query is expected to return only
one object. The single argument is the value to return when zero
results are found (more than one result is always an error). If no
default is given, it is an error if no such object exists.

* Added a WSGI middleware (in ``sqlobject.wsgi_middleware``) for
configuring the database for the request. Also handles
transactions. Available as ``egg:SQLObject`` in Paste Deploy
configuration files.

* New joins! ManyToMany and OneToMany; not fully documented yet, but still
more sensible and smarter.

* SELECT FOR UPDATE

* New module dberrors.py - a hierarchy of exceptions. Translation of DB API
module's exceptions to the new hierarchy is performed for SQLite and MySQL.

* SQLiteConnection got a new keyword "factory" - a name or a reference to
a factory function that returns a connection class; useful for
implementing functions or aggregates. See test_select.py and
test_sqlite_factory.py for examples.

* SQLObject now disallows columns with names that collide with existing
variables and methods, such as "_init", "expire", "set" and so on.

Small Features
--------------

* Configurable client character set (encoding) for MySQL.

* Added a close option to .commit(), so you can close the transaction as
you commit it.

* DecimalValidator.

* Added .expireAll() methods to sqlmeta and connection objects, to expire
all instances in those cases.

* String IDs.

* FOREIGN KEY for MySQL.

* Support for sqlite3 (a builtin module in Python 2.5).

* SelectResults cannot be queried for truth value; in any case it was
meaningless - the result was always True; now __nonzero__() raises
NotImplementedError in case one tries bool(MyTable.select()) or
"if MyTable.select():..."

* With empty parameters AND() and OR() returns None.

* Allows to use set/frozenset sets/Set/ImmutableSet sets as sequences
passed to the IN operator.

* ID columns are now INT UNSIGNED for MySQL.

Bug Fixes
---------

* Fixed problem with sqlite and threads; connections are no longer shared
between threads for sqlite (except for :memory:).

* The reference loop between SQLObject and SQLObjectState eliminated using
weak references.

* Another round of bugfixes for MySQL errors 2006 and 2013 (SERVER_GONE,
SERVER_LOST).

* Fixed a bug in MSSQLConnection caused by column names being unicode.

* Fixed a bug in FirebirdConnection caused by column names having trailing
spaces.

* Order by several columns with inheritance.

* Fixed aggregators and accumulators with inheritance.

For a more complete list, please see the news:
http://sqlobject.org/News.html

Oleg.
--
Oleg Broytmann http://phd.pp.ru/ ph*@phd.pp.ru
Programmers don't die, they just GOSUB without RETURN.
Feb 12 '07 #1
0 1161

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Robin Munn | last post by:
I've been loving SQLObject. The ability to set up a database connection and then completely *forget* about it and just manipulate Python objects has been great. But I'm running into a problem, and...
1
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.7.2 release of SQLObject. What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as classes,...
0
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.8.0b1 release of SQLObject. This is the first beta of the new branch. Taking into account that it is a result of rather large job the beta period will be...
3
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.8.0b2 release of SQLObject. What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as...
0
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.8.0b3 release of SQLObject. What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as...
2
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.8.1 release of SQLObject. What is SQLObject ================= SQLObject is an object-relational mapper. Your database tables are described as...
3
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.9.0 release of SQLObject, the first stable release of the 0.9 branch. What is SQLObject ================= SQLObject is an object-relational mapper. ...
4
by: petr.jakes.tpc | last post by:
Hi, inspired by the article written by Tarek Ziade in the February 07 issue of the "Linux +" magazine I am experimenting with the doctest module. I have two files, "displeje_pokus.py" and...
0
by: Oleg Broytmann | last post by:
Hello! I'm pleased to announce the 0.10.0b1, the first beta release of a new SQLObject branch, 0.10. What is SQLObject ================= SQLObject is an object-relational mapper. Your...
2
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and efficiency. While initially associated with cryptocurrencies...
0
by: Naresh1 | last post by:
What is WebLogic Admin Training? WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge required to effectively administer and manage Oracle...
1
by: Matthew3360 | last post by:
Hi, I have been trying to connect to a local host using php curl. But I am finding it hard to do this. I am doing the curl get request from my web server and have made sure to enable curl. I get a...
0
Oralloy
by: Oralloy | last post by:
Hello Folks, I am trying to hook up a CPU which I designed using SystemC to I/O pins on an FPGA. My problem (spelled failure) is with the synthesis of my design into a bitstream, not the C++...
0
by: Carina712 | last post by:
Setting background colors for Excel documents can help to improve the visual appeal of the document and make it easier to read and understand. Background colors can be used to highlight important...
0
BLUEPANDA
by: BLUEPANDA | last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS starter kit that's not only easy to use but also...
0
by: Rahul1995seven | last post by:
Introduction: In the realm of programming languages, Python has emerged as a powerhouse. With its simplicity, versatility, and robustness, Python has gained popularity among beginners and experts...
2
by: Ricardo de Mila | last post by:
Dear people, good afternoon... I have a form in msAccess with lots of controls and a specific routine must be triggered if the mouse_down event happens in any control. Than I need to discover what...
1
by: Johno34 | last post by:
I have this click event on my form. It speaks to a Datasheet Subform Private Sub Command260_Click() Dim r As DAO.Recordset Set r = Form_frmABCD.Form.RecordsetClone r.MoveFirst Do If...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.