diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-05-04 17:44:22 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-05-04 17:44:22 -0400 |
| commit | c6d4471af3949e339912edc4fa404d77eb31e5fb (patch) | |
| tree | c4fe146d602d6065a31a63ba8b480b6753aa41ed /lib/sqlalchemy/dialects/sqlite/base.py | |
| parent | 391ca4dc8ee0f78dec86a1ab431d4fcfa7590de3 (diff) | |
| download | sqlalchemy-c6d4471af3949e339912edc4fa404d77eb31e5fb.tar.gz | |
- [feature] Added SQLite execution option
"sqlite_raw_colnames=True", will bypass
attempts to remove "." from column names
returned by SQLite cursor.description.
[ticket:2475]
Diffstat (limited to 'lib/sqlalchemy/dialects/sqlite/base.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/sqlite/base.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py index 754bf7966..39da0cc42 100644 --- a/lib/sqlalchemy/dialects/sqlite/base.py +++ b/lib/sqlalchemy/dialects/sqlite/base.py @@ -483,6 +483,22 @@ class SQLiteIdentifierPreparer(compiler.IdentifierPreparer): result = self.quote_schema(index.table.schema, index.table.quote_schema) + "." + result return result +class SQLiteExecutionContext(default.DefaultExecutionContext): + @util.memoized_property + def _preserve_raw_colnames(self): + return self.execution_options.get("sqlite_raw_colnames", False) + + def _translate_colname(self, colname): + # adjust for dotted column names. SQLite + # in the case of UNION may store col names as + # "tablename.colname" + # in cursor.description + if not self._preserve_raw_colnames and "." in colname: + return colname.split(".")[1], colname + else: + return colname, None + + class SQLiteDialect(default.DefaultDialect): name = 'sqlite' supports_alter = False @@ -493,6 +509,7 @@ class SQLiteDialect(default.DefaultDialect): supports_cast = True default_paramstyle = 'qmark' + execution_ctx_cls = SQLiteExecutionContext statement_compiler = SQLiteCompiler ddl_compiler = SQLiteDDLCompiler type_compiler = SQLiteTypeCompiler @@ -567,16 +584,6 @@ class SQLiteDialect(default.DefaultDialect): else: return None - def _translate_colname(self, colname): - # adjust for dotted column names. SQLite - # in the case of UNION may store col names as - # "tablename.colname" - # in cursor.description - if "." in colname: - return colname.split(".")[1], colname - else: - return colname, None - @reflection.cache def get_table_names(self, connection, schema=None, **kw): if schema is not None: |
