[ANN] pysqlite 2.0.beta1

Discussion in 'Python' started by Gerhard Haering, May 8, 2005.

  1. ==================
    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 - - 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-----
    Gerhard Haering, May 8, 2005
    #1
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. BadJake

    ANN: Rekall V2.1.0 beta1

    BadJake, Sep 4, 2003, in forum: Python
    Replies:
    0
    Views:
    315
    BadJake
    Sep 4, 2003
  2. F. GEIGER
    Replies:
    2
    Views:
    541
    F. GEIGER
    May 21, 2005
  3. Kay Schluehr

    ANN: EasyExtend 2.0 - beta1

    Kay Schluehr, May 20, 2007, in forum: Python
    Replies:
    0
    Views:
    267
    Kay Schluehr
    May 20, 2007
  4. Kay Schluehr

    ANN: EasyExtend 3.0 - beta1 released

    Kay Schluehr, Mar 4, 2008, in forum: Python
    Replies:
    0
    Views:
    227
    Kay Schluehr
    Mar 4, 2008
  5. Gerhard Häring
    Replies:
    3
    Views:
    377
    Gerhard Häring
    Mar 13, 2008
Loading...

Share This Page