diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-05 00:46:11 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-05 00:46:11 -0500 |
| commit | 8e24584d8d242d40d605752116ac05be33f697d3 (patch) | |
| tree | 3bd83f533b0743e4eef7f377e74a62d60adc4995 /lib/sqlalchemy/dialects/sqlite/base.py | |
| parent | af75fdf60fd3498ab3c5757e81a5d6b5e52f590d (diff) | |
| download | sqlalchemy-8e24584d8d242d40d605752116ac05be33f697d3.tar.gz | |
- ResultProxy and friends always reference the DBAPI connection at the same time
as the cursor. There is no reason for CursorFairy - the only use case would be,
end-user is using the pool or pool.manage with DBAPI connections, uses a cursor,
deferences the owning connection and continues using cursor. This is an almost
nonexistent use case and isn't correct usage at a DBAPI level. Take out CursorFairy.
- move the "check for a dot in the colname" logic out to the sqlite dialect.
Diffstat (limited to 'lib/sqlalchemy/dialects/sqlite/base.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/sqlite/base.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py index 261793a33..a74ea0c3c 100644 --- a/lib/sqlalchemy/dialects/sqlite/base.py +++ b/lib/sqlalchemy/dialects/sqlite/base.py @@ -56,8 +56,7 @@ import datetime, re, time from sqlalchemy import schema as sa_schema from sqlalchemy import sql, exc, pool, DefaultClause -from sqlalchemy.engine import default -from sqlalchemy.engine import reflection +from sqlalchemy.engine import default, base, reflection from sqlalchemy import types as sqltypes from sqlalchemy import util from sqlalchemy.sql import compiler, functions as sql_functions @@ -335,6 +334,20 @@ class SQLiteIdentifierPreparer(compiler.IdentifierPreparer): result = self.quote_schema(index.table.schema, index.table.quote_schema) + "." + result return result +class SQLiteExecutionContext(default.DefaultExecutionContext): + def get_result_proxy(self): + rp = base.ResultProxy(self) + if rp._metadata: + # adjust for dotted column names. SQLite + # in the case of UNION may store col names as + # "tablename.colname" + # in cursor.description + for colname in rp._metadata.keys: + if "." in colname: + trunc_col = colname.split(".")[1] + rp._metadata._set_keymap_synonym(trunc_col, colname) + return rp + class SQLiteDialect(default.DefaultDialect): name = 'sqlite' supports_alter = False @@ -352,7 +365,8 @@ class SQLiteDialect(default.DefaultDialect): ischema_names = ischema_names colspecs = colspecs isolation_level = None - + execution_ctx_cls = SQLiteExecutionContext + supports_cast = True supports_default_values = True |
