On 2008-03-01, 23:41 GMT, Mel wrote:
> There's nothing much wrong. cur.fetchall is returning a list
> of all the selected rows, and each row is a tuple of fields.
> Each tuple is being converted for display by repr, so the
> strings are shown as unicode, which is what they are
> internally. Change the print to
>
> for (field,) in cur.fetchall():
> print field
>
> and you'll see your plain-text strings.
Thanks for your help, but plain-text strings is not what
I wanted. The boolean variables was what I was after. See this
modified version of the script:
#!/usr/bin/python
import sqlite3
def adapt_boolean(bol):
if bol:
return "True"
else:
return "False"
def convert_boolean(bolStr):
if str(bolStr) == "True":
return bool(True)
elif str(bolStr) == "False":
return bool(False)
else:
raise ValueError, "Unknown value of bool attribute
'%s'" % bolStr
sqlite3.register_adapter(bool,adapt_boolean)
sqlite3.register_converter("boolean",convert_boolean)
db = sqlite3.connect(":memory:")
cur=db.cursor()
cur.execute("create table test(p boolean)")
p=False
cur.execute("insert into test(p) values (?)", (p,))
p=True
cur.execute("insert into test(p) values (?)", (p,))
cur.execute("select p from test")
for (field,) in cur.fetchall():
print field,type(field)
The output here is:
[EMAIL PROTECTED] dumpBugzilla]$ python testAdaptors.py False <type
'unicode'>
True <type 'unicode'>
[EMAIL PROTECTED] dumpBugzilla]$
I thought that converter is there for just exactly this -- that
I would get back bool values not strings.
Sorry for not being clear in the first run.
Matej
--
http://mail.python.org/mailman/listinfo/python-list