Update SQLAlchemy

This commit is contained in:
Ruud
2013-06-14 11:00:06 +02:00
parent 267ecfacab
commit 4aa6700ceb
124 changed files with 6500 additions and 5207 deletions
+27 -25
View File
@@ -1,5 +1,5 @@
# engine/default.py
# Copyright (C) 2005-2012 the SQLAlchemy authors and contributors <see AUTHORS file>
# Copyright (C) 2005-2013 the SQLAlchemy authors and contributors <see AUTHORS file>
#
# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
@@ -89,17 +89,13 @@ class DefaultDialect(base.Dialect):
server_version_info = None
# indicates symbol names are
# indicates symbol names are
# UPPERCASEd if they are case insensitive
# within the database.
# if this is True, the methods normalize_name()
# and denormalize_name() must be provided.
requires_name_normalize = False
# a hook for SQLite's translation of
# result column names
_translate_colname = None
reflection_options = ()
def __init__(self, convert_unicode=False, assert_unicode=False,
@@ -190,7 +186,7 @@ class DefaultDialect(base.Dialect):
self.returns_unicode_strings = self._check_unicode_returns(connection)
self.do_rollback(connection.connection)
def on_connect(self):
"""return a callable which sets up a newly created DBAPI connection.
@@ -220,7 +216,7 @@ class DefaultDialect(base.Dialect):
try:
cursor.execute(
cast_to(
expression.select(
expression.select(
[expression.cast(
expression.literal_column(
"'test %s returns'" % formatstr), type_)
@@ -264,20 +260,20 @@ class DefaultDialect(base.Dialect):
return insp.reflecttable(table, include_columns, exclude_columns)
def get_pk_constraint(self, conn, table_name, schema=None, **kw):
"""Compatiblity method, adapts the result of get_primary_keys()
"""Compatibility method, adapts the result of get_primary_keys()
for those dialects which don't implement get_pk_constraint().
"""
return {
'constrained_columns':
self.get_primary_keys(conn, table_name,
self.get_primary_keys(conn, table_name,
schema=schema, **kw)
}
def validate_identifier(self, ident):
if len(ident) > self.max_identifier_length:
raise exc.IdentifierError(
"Identifier '%s' exceeds maximum length of %d characters" %
"Identifier '%s' exceeds maximum length of %d characters" %
(ident, self.max_identifier_length)
)
@@ -341,8 +337,8 @@ class DefaultDialect(base.Dialect):
return False
def reset_isolation_level(self, dbapi_conn):
# default_isolation_level is read from the first conenction
# after the initial set of 'isolation_level', if any, so is
# default_isolation_level is read from the first connection
# after the initial set of 'isolation_level', if any, so is
# the configured default of this dialect.
self.set_isolation_level(dbapi_conn, self.default_isolation_level)
@@ -355,9 +351,15 @@ class DefaultExecutionContext(base.ExecutionContext):
result_map = None
compiled = None
statement = None
postfetch_cols = None
prefetch_cols = None
_is_implicit_returning = False
_is_explicit_returning = False
# a hook for SQLite's translation of
# result column names
_translate_colname = None
@classmethod
def _init_ddl(cls, dialect, connection, dbapi_connection, compiled_ddl):
"""Initialize execution context for a DDLElement construct."""
@@ -449,8 +451,8 @@ class DefaultExecutionContext(base.ExecutionContext):
processors = compiled._bind_processors
# Convert the dictionary of bind parameter values
# into a dict or list to be sent to the DBAPI's
# Convert the dictionary of bind parameter values
# into a dict or list to be sent to the DBAPI's
# execute() or executemany() method.
parameters = []
if dialect.positional:
@@ -513,7 +515,7 @@ class DefaultExecutionContext(base.ExecutionContext):
for d in parameters
] or [{}]
else:
self.parameters = [dialect.execute_sequence_format(p)
self.parameters = [dialect.execute_sequence_format(p)
for p in parameters]
self.executemany = len(parameters) > 1
@@ -550,10 +552,10 @@ class DefaultExecutionContext(base.ExecutionContext):
@util.memoized_property
def should_autocommit(self):
autocommit = self.execution_options.get('autocommit',
not self.compiled and
autocommit = self.execution_options.get('autocommit',
not self.compiled and
self.statement and
expression.PARSE_AUTOCOMMIT
expression.PARSE_AUTOCOMMIT
or False)
if autocommit is expression.PARSE_AUTOCOMMIT:
@@ -586,7 +588,7 @@ class DefaultExecutionContext(base.ExecutionContext):
if type_ is not None:
# apply type post processors to the result
proc = type_._cached_result_processor(
self.dialect,
self.dialect,
self.cursor.description[0][1]
)
if proc:
@@ -623,7 +625,7 @@ class DefaultExecutionContext(base.ExecutionContext):
and when no explicit id value was bound to the
statement.
The function is called once, directly after
The function is called once, directly after
post_exec() and before the transaction is committed
or ResultProxy is generated. If the post_exec()
method assigns a value to `self._lastrowid`, the
@@ -672,7 +674,7 @@ class DefaultExecutionContext(base.ExecutionContext):
self.inserted_primary_key = [
c is autoinc_col and lastrowid or v
for c, v in zip(
table.primary_key,
table.primary_key,
self.inserted_primary_key)
]
@@ -698,7 +700,7 @@ class DefaultExecutionContext(base.ExecutionContext):
style of ``setinputsizes()`` on the cursor, using DB-API types
from the bind parameter's ``TypeEngine`` objects.
This method only called by those dialects which require it,
This method only called by those dialects which require it,
currently cx_oracle.
"""
@@ -743,7 +745,7 @@ class DefaultExecutionContext(base.ExecutionContext):
elif default.is_callable:
return default.arg(self)
elif default.is_clause_element:
# TODO: expensive branching here should be
# TODO: expensive branching here should be
# pulled into _exec_scalar()
conn = self.connection
c = expression.select([default.arg]).compile(bind=conn)
@@ -809,7 +811,7 @@ class DefaultExecutionContext(base.ExecutionContext):
if self.isinsert:
self.inserted_primary_key = [
self.compiled_parameters[0].get(c.key, None)
self.compiled_parameters[0].get(c.key, None)
for c in self.compiled.\
statement.table.primary_key
]