From 9f894d2f265bb5fd03ab0b3aa3fd164108c99259 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 5 Nov 2008 20:50:48 +0000 Subject: - Dialects can now generate label names of adjustable length. Pass in the argument "label_length=" 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 --- lib/sqlalchemy/engine/default.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy/engine') 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) -- cgit v1.2.1