diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-05 20:50:48 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-05 20:50:48 +0000 |
| commit | 9f894d2f265bb5fd03ab0b3aa3fd164108c99259 (patch) | |
| tree | 5886dd1b46b1e1865de2a278ada95f168ed1915b /lib/sqlalchemy/engine/default.py | |
| parent | 89b86f41bbdb15d024bc716fdb484b1b6f57ddb9 (diff) | |
| download | sqlalchemy-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/default.py')
| -rw-r--r-- | lib/sqlalchemy/engine/default.py | 5 |
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) |
