From: Mike Bayer Date: Sun, 29 Oct 2006 02:40:27 +0000 (+0000) Subject: further fixes to sqlite booleans, weren't working as defaults X-Git-Tag: rel_0_3_1~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4273dd4cfe3bca1500c3d0263100cd4cedef462e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git further fixes to sqlite booleans, weren't working as defaults --- diff --git a/CHANGES b/CHANGES index bfcf195c1c..9b17f1648a 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ loaded already. this can be turned off (i.e. the old behavior) by setting passive_deletes=True on a relation(). - MySQL catches exception on "describe" and reports as NoSuchTableError +- further fixes to sqlite booleans, weren't working as defaults 0.3.0 - General: diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 557441254a..c76149d7bc 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -85,6 +85,8 @@ class SLBoolean(sqltypes.Boolean): def get_col_spec(self): return "BOOLEAN" def convert_bind_param(self, value, dialect): + if value is None: + return None return value and 1 or 0 def convert_result_value(self, value, dialect): if value is None: diff --git a/test/sql/defaults.py b/test/sql/defaults.py index 57de15c914..d5aac19fd1 100644 --- a/test/sql/defaults.py +++ b/test/sql/defaults.py @@ -63,7 +63,10 @@ class DefaultTest(PersistTest): Column('col5', deftype, PassiveDefault(def2)), # preexecute + update timestamp - Column('col6', Date, default=currenttime, onupdate=currenttime) + Column('col6', Date, default=currenttime, onupdate=currenttime), + + Column('boolcol1', Boolean, default=True), + Column('boolcol2', Boolean, default=False) ) t.create() @@ -93,7 +96,7 @@ class DefaultTest(PersistTest): ctexec = currenttime.scalar() self.echo("Currenttime "+ repr(ctexec)) l = t.select().execute() - self.assert_(l.fetchall() == [(51, 'imthedefault', f, ts, ts, ctexec), (52, 'imthedefault', f, ts, ts, ctexec), (53, 'imthedefault', f, ts, ts, ctexec)]) + self.assert_(l.fetchall() == [(51, 'imthedefault', f, ts, ts, ctexec, True, False), (52, 'imthedefault', f, ts, ts, ctexec, True, False), (53, 'imthedefault', f, ts, ts, ctexec, True, False)]) def testinsertvalues(self): t.insert(values={'col3':50}).execute() @@ -109,7 +112,7 @@ class DefaultTest(PersistTest): self.echo("Currenttime "+ repr(ctexec)) l = t.select(t.c.col1==pk).execute() l = l.fetchone() - self.assert_(l == (pk, 'im the update', f2, None, None, ctexec)) + self.assert_(l == (pk, 'im the update', f2, None, None, ctexec, True, False)) # mysql/other db's return 0 or 1 for count(1) self.assert_(14 <= f2 <= 15)