summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/sqlite/base.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-12-05 00:46:11 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2010-12-05 00:46:11 -0500
commit8e24584d8d242d40d605752116ac05be33f697d3 (patch)
tree3bd83f533b0743e4eef7f377e74a62d60adc4995 /lib/sqlalchemy/dialects/sqlite/base.py
parentaf75fdf60fd3498ab3c5757e81a5d6b5e52f590d (diff)
downloadsqlalchemy-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.py20
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