[ANN] pysqlite 2.0.beta1

  • Thread starter Gerhard Haering
  • Start date
G

Gerhard Haering

==================
pysqlite 2.0.beta1
==================

I'm glad to announce pysqlite 2.0.beta1. The API is 98 % stable now. And
pysqlite itself should be a lot more stable too, now.

The most notable changes are a lot of fixed refcount bugs, and the added
documentation.

Download the release here:

Sources: http://initd.org/pub/software/pysqlite/releases/2.0/2.0.beta1/pysqlite-2.0.beta1.tar.gz
win32 binaries for Python 2.3: http://initd.org/pub/software/pysqlite/releases/2.0/2.0.beta1/pysqlite-2.0.beta1.win32-py2.3.exe
win32 binaries for Python 2.4: http://initd.org/pub/software/pysqlite/releases/2.0/2.0.beta1/pysqlite-2.0.beta1.win32-py2.4.exe

pysqlite homepage, bug tracker, wiki: http://pysqlite.org/


Changes since 2.0.alpha4:
=========================

- Added pysqlite 2.0 documentation: usage guide and source installation guide.
Adapted from kinterbasdb documentation with the permission of David Rushby.

- Fixed several refcount problems. Per test suite run, lose 0 references
instead of 550 per test suite run like in alpha4.

- If a database file cannot be opened, raise an OperationalError specifically
instead of a DatabaseError.

- Call the row factory with (cursor, row_tuple) instead of (row_tuple).

- Fixed a crash in .connect() when you tried to set a keyword argument. It's
quite annoying that Python doesn't offer a method to extract a single keyword
argument at C-level easily. Argh! So I bit the bullet and duplicated the
parameter extraction code.

- The type name of PrepareProtocol was corrected. Only interesting for
introspection.

- Added more tests to the test suite.

- Implemented cursor.arraysize.

- cursor.rowcount is now -1 instead of None in case of "not determined", like
the DB-API requires.

- Implemented autocommit mode which replaces the ''no_implicit_begin''
parameter to the module-level connect(). This way, we're more compatible with
other DB-API modules. autocommit parameter in module-level connect and also
an autocommit property of connections. -- The "begin" method of connections
is gone.


- Completely reworked the advanced type detection:
o connection.register_converter is gone
o instead, the dictionary connection.converters is exposed directly.
o The parameter more_types to the module-level connect is gone.
o Instead, use any combination of PARSE_DECLTYPES and PARSE_COLNAMES for
the new paramter detect_types.

PARSE_DECLTYPES will parse out the first word of a declared type and look
up a converter in connection.converters:

create table foo(col mytype not null)

The decltype would be "mytype not null", but PARSE_DECLTYPES will cut
out "mytype" and look for a converter in converters["mytype"]. If it
finds any, it will use it to convert the value. Otherwise, the standard
SQLite manifest typing will be used.

PARSE_COLNAMES will parse out the column names and look up a converter in
connection.converters:

cur.execute("select 1 as "colname [mytype]")

the column names will be parsed for [...], in this case mytype will be
found as the type for the colum, and the converters dictionary will be
consulted for an appropriate converter function. If none is found, the
standard SQLite manifest typing will be used.

Also, the column names in cursor.description will only consist of the first
word. So it would be "colname" in our example, not "colname [mytype]".

- cursor.coltypes is gone.

- The connection attribute of cursors is now made available at Python level.
That's an optional DB-API extension.

- The exception classes are now attributes of the connection objects. That's an
optional DB-API extension.

- Optimized the _sqlite_step_with_busyhandler() function by making time.time()
and time.sleep() available at module import instead of importing the "time"
module each time and getting out the "time" and "sleep" functions each time.
Big performance improvement.

- Some work on the benchmarks.


- Made the destructor of the Cursor class more stable. It used to crash when an
error occured in the Cursor *constructor*.

- Implemented a check that the parameter for Cursor() is actually an instance
of the Connection class (or a subclass thereof).


- Allow long integers as parameters. Re-enable test cases for this.
--
Gerhard Häring - (e-mail address removed) - Python, web & database development

pysqlite - Powerful and fast embedded database engine "SQLite" for Python.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQFCfXtudIO4ozGCH14RAjbpAJ9WDkmPnjcpC00gOY4JE9w0hwKFeACcCtKY
trgxBsYaSvsYMbi5HBt3sYs=
=TRje
-----END PGP SIGNATURE-----
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top