summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-11-05 20:50:48 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-11-05 20:50:48 +0000
commit9f894d2f265bb5fd03ab0b3aa3fd164108c99259 (patch)
tree5886dd1b46b1e1865de2a278ada95f168ed1915b /lib/sqlalchemy/engine
parent89b86f41bbdb15d024bc716fdb484b1b6f57ddb9 (diff)
downloadsqlalchemy-9f894d2f265bb5fd03ab0b3aa3fd164108c99259.tar.gz
- Dialects can now generate label names of adjustable length.
Pass in the argument "label_length=<value>" to create_engine() to adjust how many characters max will be present in dynamically generated column labels, i.e. "somecolumn AS somelabel". Any value less than 6 will result in a label of minimal size, consiting of an underscore and a numeric counter. The compiler uses the value of dialect.max_identifier_length as a default. [ticket:1211] - removed ANON_NAME regular expression, using string patterns now - _generated_label() unicode subclass is used to indicate generated names which are subject to truncation
Diffstat (limited to 'lib/sqlalchemy/engine')
-rw-r--r--lib/sqlalchemy/engine/default.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index f99cac465..ec15313e4 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -40,7 +40,7 @@ class DefaultDialect(base.Dialect):
supports_default_values = False
supports_empty_insert = True
- def __init__(self, convert_unicode=False, assert_unicode=False, encoding='utf-8', paramstyle=None, dbapi=None, **kwargs):
+ def __init__(self, convert_unicode=False, assert_unicode=False, encoding='utf-8', paramstyle=None, dbapi=None, label_length=None, **kwargs):
self.convert_unicode = convert_unicode
self.assert_unicode = assert_unicode
self.encoding = encoding
@@ -55,6 +55,9 @@ class DefaultDialect(base.Dialect):
self.paramstyle = self.default_paramstyle
self.positional = self.paramstyle in ('qmark', 'format', 'numeric')
self.identifier_preparer = self.preparer(self)
+ if label_length and label_length > self.max_identifier_length:
+ raise exc.ArgumentError("Label length of %d is greater than this dialect's maximum identifier length of %d" % (label_length, self.max_identifier_length))
+ self.label_length = label_length
def create_execution_context(self, connection, **kwargs):
return DefaultExecutionContext(self, connection, **kwargs)