Python 2.3 Breaks PySQLite a Little
Gerhard Häring
gh at ghaering.de
Wed Aug 6 18:01:49 EDT 2003
achrist at easystreet.com wrote:
> Have hit a problem with PySQLite and python 2.3. The new bool
> type doesn't want to get written properly to a database. I was
> expecting this to break when I started using True and False in
> python 2.2, but it didn't. Now there's a little trouble.
> I changed the _quote function in pysqlite main.py to look like:
>
>
> def _quote(value):
>
> if value is None:
> return 'NULL'
> elif isinstance(value, bool): ### Added
> return 0 + value ### Added
> [...]
>
> Is that all it needs?
Yeah, except I'd write int(value). [1]
You'll also want to convert it back to bools, right? use the
'converters' parameter of the connect call.
To check wether your changes worked as expected, you could use something
like:
#v+
cx = sqlite.connect("db", converters={"bool": bool})
cu.execute("create table test(b bool)")
cu.execute("insert into test(b) values (%s)", (True,))
cu.execute("select b from test")
res = cu.fetchone()
assert type(res.b) is bool
#v-
All completely untested, I'm too lazy now ;-)
-- Gerhard
[1] And I intend to drop all this politically correct isinstance stuff
in a future version for performance reasons.
More information about the Python-list
mailing list