[ANN] pysqlite 2.4.0 released

G

Gerhard Häring

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

pysqlite 2.4.0 released
=======================

I'm pleased to announce the availability of pysqlite 2.4.0. This is
a release with major new features.

Go to http://pysqlite.org/ for downloads, online documentation and
reporting bugs.

What is pysqlite?

pysqlite is a DB-API 2.0-compliant database interface for SQLite.

SQLite is a in-process library that implements a self-contained,
serverless, zero-configuration, transactional SQL database
engine.

pysqlite makes this powerful embedded SQL engine available to
Python programmers. It stays compatible with the Python database
API specification 2.0 as much as possible, but also exposes most
of SQLite's native API, so that it is for example possible to
create user-defined SQL functions and aggregates in Python.

If you need a relational database for your applications, or even
small tools or helper scripts, pysqlite is often a good fit. It's
easy to use, easy to deploy, and does not depend on any other
Python libraries or platform libraries, except SQLite. SQLite
itself is ported to most platforms you'd ever care about.

It's often a good alternative to MySQL, the Microsoft JET engine
or the MSDE, without having any of their license and deployment
issues.

pysqlite can be downloaded from http://pysqlite.org/ - Sources and
Windows binaries for Python 2.5, 2.4 and Python 2.3 are available.

=======
CHANGES
=======

- - Implemented context managers. pysqlite's connections can now be used as
context managers with Python 2.5 or later:

from __future__ import with_statement
from pysqlite2 import dbapi2 as sqlite

con = sqlite.connect(":memory:")
con.execute("create table person (id integer primary key, firstname varchar unique)")

# Successful, con.commit() is called automatically afterwards
with con:
con.execute("insert into person(firstname) values (?)", ("Joe",))

# con.rollback() is called after the with block finishes with an exception, the
# exception is still raised and must be catched
try:
with con:
con.execute("insert into person(firstname) values (?)", ("Joe",))
except sqlite.IntegrityError:
print "couldn't add Joe twice"

- - pysqlite connections can now be created from APSW connections. This enables
users to use APSW functionality in applications using the DB-API from
pysqlite:

from pysqlite2 import dbapi2 as sqlite
import apsw

apsw_con = apsw.Connection(":memory:")
apsw_con.createscalarfunction("times_two", lambda x: 2*x, 1)

# Create pysqlite connection from APSW connection
con = sqlite.connect(apsw_con)
result = con.execute("select times_two(15)").fetchone()[0]
assert result == 30
con.close()

Caveat: This will only work if both pysqlite and APSW are dynamically
linked against the same SQLite shared library. Otherwise you will
experience a segfault.

- - Fixed shuffled docstrings for fetchXXX methods.

- - Workaround for SQLite 3.5.x versions which apparently return NULL for
"no-operation" statements.

- - Disable the test for rollback detection on old SQLite versions. This prevents
test failures on systems that ship outdated SQLite libraries like MacOS X.


- - Implemented set_progress_handler for progress callbacks from SQLite. This is
particularly useful to update GUIs during long-running queries. Thanks to
exarkun for the original patch.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHScvodIO4ozGCH14RAoFkAJ4uQc5hW83jhD9D30FbjeYvMRjvKwCdEq/y
MmWmjLU7eFpLprVQRZpp2OQ=
=caM6
-----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

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top