summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/default.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r--lib/sqlalchemy/engine/default.py59
1 files changed, 15 insertions, 44 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index ec8d8d5a7..50fac430b 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -26,6 +26,10 @@ class DefaultDialect(base.Dialect):
statement_compiler = compiler.DefaultCompiler
preparer = compiler.IdentifierPreparer
defaultrunner = base.DefaultRunner
+ supports_alter = True
+ supports_unicode_statements = False
+ max_identifier_length = 9999
+ supports_sane_rowcount = True
def __init__(self, convert_unicode=False, encoding='utf-8', default_paramstyle='named', paramstyle=None, dbapi=None, **kwargs):
self.convert_unicode = convert_unicode
@@ -33,7 +37,13 @@ class DefaultDialect(base.Dialect):
self.positional = False
self._ischema = None
self.dbapi = dbapi
- self._figure_paramstyle(paramstyle=paramstyle, default=default_paramstyle)
+ if paramstyle is not None:
+ self.paramstyle = paramstyle
+ elif self.dbapi is not None:
+ self.paramstyle = self.dbapi.paramstyle
+ else:
+ self.paramstyle = default_paramstyle
+ self.positional = self.paramstyle in ('qmark', 'format', 'numeric')
self.identifier_preparer = self.preparer(self)
def dbapi_type_map(self):
@@ -56,23 +66,10 @@ class DefaultDialect(base.Dialect):
typeobj = typeobj()
return typeobj
- def supports_unicode_statements(self):
- """True if DB-API can receive SQL statements as Python Unicode."""
- return False
-
- def max_identifier_length(self):
- # TODO: probably raise this and fill out db modules better
- return 9999
-
- def supports_alter(self):
- return True
def oid_column_name(self, column):
return None
- def supports_sane_rowcount(self):
- return True
-
def do_begin(self, connection):
"""Implementations might want to put logic here for turning
autocommit on/off, etc.
@@ -120,32 +117,6 @@ class DefaultDialect(base.Dialect):
def is_disconnect(self, e):
return False
- def _set_paramstyle(self, style):
- self._paramstyle = style
- self._figure_paramstyle(style)
-
- paramstyle = property(lambda s:s._paramstyle, _set_paramstyle)
-
- def _figure_paramstyle(self, paramstyle=None, default='named'):
- if paramstyle is not None:
- self._paramstyle = paramstyle
- elif self.dbapi is not None:
- self._paramstyle = self.dbapi.paramstyle
- else:
- self._paramstyle = default
-
- if self._paramstyle == 'named':
- self.positional=False
- elif self._paramstyle == 'pyformat':
- self.positional=False
- elif self._paramstyle == 'qmark' or self._paramstyle == 'format' or self._paramstyle == 'numeric':
- # for positional, use pyformat internally, ANSICompiler will convert
- # to appropriate character upon compilation
- self.positional = True
- else:
- raise exceptions.InvalidRequestError(
- "Unsupported paramstyle '%s'" % self._paramstyle)
-
def _get_ischema(self):
if self._ischema is None:
import sqlalchemy.databases.information_schema as ischema
@@ -185,7 +156,7 @@ class DefaultExecutionContext(base.ExecutionContext):
else:
self.statement = None
- if self.statement is not None and not dialect.supports_unicode_statements():
+ if self.statement is not None and not dialect.supports_unicode_statements:
self.statement = self.statement.encode(self.dialect.encoding)
self.cursor = self.create_cursor()
@@ -200,7 +171,7 @@ class DefaultExecutionContext(base.ExecutionContext):
def __encode_param_keys(self, params):
"""apply string encoding to the keys of dictionary-based bind parameters"""
- if self.dialect.positional or self.dialect.supports_unicode_statements():
+ if self.dialect.positional or self.dialect.supports_unicode_statements:
return params
else:
def proc(d):
@@ -215,7 +186,7 @@ class DefaultExecutionContext(base.ExecutionContext):
return proc(params)
def __convert_compiled_params(self, parameters):
- encode = not self.dialect.supports_unicode_statements()
+ encode = not self.dialect.supports_unicode_statements
# the bind params are a CompiledParams object. but all the
# DB-API's hate that object (or similar). so convert it to a
# clean dictionary/list/tuple of dictionary/tuple of list
@@ -274,7 +245,7 @@ class DefaultExecutionContext(base.ExecutionContext):
return self.cursor.rowcount
def supports_sane_rowcount(self):
- return self.dialect.supports_sane_rowcount()
+ return self.dialect.supports_sane_rowcount
def last_inserted_ids(self):
return self._last_inserted_ids