From: Mike Bayer Date: Fri, 26 Mar 2010 17:48:13 +0000 (-0400) Subject: clean up sqlite version detection stuff X-Git-Tag: rel_0_6beta3~12^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4291e0b316438a81121de1170fe902dc375a4969;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git clean up sqlite version detection stuff --- diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py index 0d98273228..ca0a39136c 100644 --- a/lib/sqlalchemy/dialects/sqlite/base.py +++ b/lib/sqlalchemy/dialects/sqlite/base.py @@ -331,6 +331,9 @@ class SQLiteDialect(default.DefaultDialect): colspecs = colspecs isolation_level = None + supports_cast = True + supports_default_values = True + def __init__(self, isolation_level=None, native_datetime=False, **kwargs): default.DefaultDialect.__init__(self, **kwargs) if isolation_level and isolation_level not in ('SERIALIZABLE', @@ -345,6 +348,13 @@ class SQLiteDialect(default.DefaultDialect): # conversions (and perhaps datetime/time as well on some # hypothetical driver ?) self.native_datetime = native_datetime + + if self.dbapi is not None: + self.supports_default_values = \ + self.dbapi.sqlite_version_info >= (3, 3, 8) + self.supports_cast = \ + self.dbapi.sqlite_version_info >= (3, 2, 3) + def on_connect(self): if self.isolation_level is not None: diff --git a/lib/sqlalchemy/dialects/sqlite/pysqlite.py b/lib/sqlalchemy/dialects/sqlite/pysqlite.py index b48abbb7d6..575cb37f20 100644 --- a/lib/sqlalchemy/dialects/sqlite/pysqlite.py +++ b/lib/sqlalchemy/dialects/sqlite/pysqlite.py @@ -187,20 +187,15 @@ class SQLiteDialect_pysqlite(SQLiteDialect): def __init__(self, **kwargs): SQLiteDialect.__init__(self, **kwargs) - def vers(num): - return tuple([int(x) for x in num.split('.')]) + if self.dbapi is not None: sqlite_ver = self.dbapi.version_info - if sqlite_ver < (2, 1, '3'): + if sqlite_ver < (2, 1, 3): util.warn( ("The installed version of pysqlite2 (%s) is out-dated " "and will cause errors in some cases. Version 2.1.3 " "or greater is recommended.") % '.'.join([str(subver) for subver in sqlite_ver])) - if self.dbapi.sqlite_version_info < (3, 3, 8): - self.supports_default_values = False - self.supports_cast = (self.dbapi is None or vers(self.dbapi.sqlite_version) >= vers("3.2.3")) - @classmethod def dbapi(cls):