diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-09-22 06:12:22 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-09-22 06:12:22 +0000 |
commit | c2a456b15412ab9c314f8911f74adc55a85f5e2a (patch) | |
tree | 962061658334b96fe1a30561e678a9c8c11505b9 /lib/sqlalchemy/sql.py | |
parent | e5d041c94d0499a5cc88b1f6d0fd610606500686 (diff) | |
download | sqlalchemy-c2a456b15412ab9c314f8911f74adc55a85f5e2a.tar.gz |
Diffstat (limited to 'lib/sqlalchemy/sql.py')
-rw-r--r-- | lib/sqlalchemy/sql.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 35747476d..43891dc48 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -290,10 +290,11 @@ class FromClause(ClauseElement): visitor.visit_fromclause(self) class BindParamClause(ClauseElement): - def __init__(self, key, value, shortname = None): + def __init__(self, key, value, shortname = None, typeengine = None): self.key = key self.value = value self.shortname = shortname + self.typeengine = typeengine def accept_visitor(self, visitor): visitor.visit_bindparam(self) @@ -303,7 +304,13 @@ class BindParamClause(ClauseElement): def hash_key(self): return "BindParam(%s, %s, %s)" % (repr(self.key), repr(self.value), repr(self.shortname)) - + + def typeprocess(self, value): + if self.typeengine is not None: + return self.typeengine.convert_bind_param(value) + else: + return value + class TextClause(ClauseElement): """represents any plain text WHERE clause or full SQL statement""" @@ -483,7 +490,8 @@ class ColumnSelectable(Selectable): self.column = column self.name = column.name self.columns = [self.column] - + self.typeengine = column.table.engine.type_descriptor(self.column.type) + if column.table.name: self.label = column.table.name + "_" + self.column.name self.fullname = column.table.name + "." + self.column.name @@ -500,9 +508,9 @@ class ColumnSelectable(Selectable): def _compare(self, operator, obj): if _is_literal(obj): if self.column.table.name is None: - obj = BindParamClause(self.name, obj, shortname = self.name) + obj = BindParamClause(self.name, obj, shortname = self.name, typeengine = self.typeengine) else: - obj = BindParamClause(self.column.table.name + "_" + self.name, obj, shortname = self.name) + obj = BindParamClause(self.column.table.name + "_" + self.name, obj, shortname = self.name, typeengine = self.typeengine) return BinaryClause(self.column, obj, operator) |