diff options
author | Jason Kirtland <jek@discorporate.us> | 2008-01-10 23:16:56 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2008-01-10 23:16:56 +0000 |
commit | 3e9df22546cb4c7af0ece290f4f57a377516f142 (patch) | |
tree | a02dee0b6513ee58d80da2f58577a0cc53e58c5c /lib/sqlalchemy/databases/oracle.py | |
parent | 04ad3303dc84b220292752afe343e73e35707e00 (diff) | |
download | sqlalchemy-3e9df22546cb4c7af0ece290f4f57a377516f142.tar.gz |
Include column name in length-less String warning (more [ticket:912])
Diffstat (limited to 'lib/sqlalchemy/databases/oracle.py')
-rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 7ac8f8951..394aba178 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -44,11 +44,11 @@ class OracleDate(sqltypes.Date): else: return value.date() return process - + class OracleDateTime(sqltypes.DateTime): def get_col_spec(self): return "DATE" - + def result_processor(self, dialect): def process(value): if value is None or isinstance(value,datetime.datetime): @@ -58,7 +58,7 @@ class OracleDateTime(sqltypes.DateTime): return datetime.datetime(value.year,value.month, value.day,value.hour, value.minute, value.second) return process - + # Note: # Oracle DATE == DATETIME # Oracle does not allow milliseconds in DATE @@ -135,7 +135,7 @@ class OracleBinary(sqltypes.Binary): else: return value return process - + class OracleBoolean(sqltypes.Boolean): def get_col_spec(self): return "SMALLINT" @@ -146,7 +146,7 @@ class OracleBoolean(sqltypes.Boolean): return None return value and True or False return process - + def bind_processor(self, dialect): def process(value): if value is True: @@ -158,7 +158,7 @@ class OracleBoolean(sqltypes.Boolean): else: return value and True or False return process - + colspecs = { sqltypes.Integer : OracleInteger, sqltypes.Smallinteger : OracleSmallInteger, @@ -230,7 +230,7 @@ class OracleExecutionContext(default.DefaultExecutionContext): type_code = column[1] if type_code in self.dialect.ORACLE_BINARY_TYPES: return base.BufferedColumnResultProxy(self) - + return base.ResultProxy(self) class OracleDialect(default.DefaultDialect): @@ -258,9 +258,9 @@ class OracleDialect(default.DefaultDialect): # etc. leads to a little too much magic, reflection doesn't know if it should # expect encoded strings or unicodes, etc. self.dbapi_type_map = { - self.dbapi.CLOB: OracleText(), - self.dbapi.BLOB: OracleBinary(), - self.dbapi.BINARY: OracleRaw(), + self.dbapi.CLOB: OracleText(), + self.dbapi.BLOB: OracleBinary(), + self.dbapi.BINARY: OracleRaw(), } self.ORACLE_BINARY_TYPES = [getattr(self.dbapi, k) for k in ["BFILE", "CLOB", "NCLOB", "BLOB"] if hasattr(self.dbapi, k)] @@ -268,7 +268,7 @@ class OracleDialect(default.DefaultDialect): import cx_Oracle return cx_Oracle dbapi = classmethod(dbapi) - + def create_connect_args(self, url): dialect_opts = dict(url.query) for opt in ('use_ansi', 'auto_setinputsizes', 'auto_convert_lobs', @@ -340,10 +340,10 @@ class OracleDialect(default.DefaultDialect): def do_begin_twophase(self, connection, xid): connection.connection.begin(*xid) - + def do_prepare_twophase(self, connection, xid): connection.connection.prepare() - + def do_rollback_twophase(self, connection, xid, is_prepared=True, recover=False): self.do_rollback(connection.connection) @@ -352,7 +352,7 @@ class OracleDialect(default.DefaultDialect): def do_recover_twophase(self, connection): pass - + def create_execution_context(self, *args, **kwargs): return OracleExecutionContext(self, *args, **kwargs) @@ -433,7 +433,7 @@ class OracleDialect(default.DefaultDialect): return name.lower().decode(self.encoding) else: return name.decode(self.encoding) - + def _denormalize_name(self, name): if name is None: return None @@ -441,7 +441,7 @@ class OracleDialect(default.DefaultDialect): return name.upper().encode(self.encoding) else: return name.encode(self.encoding) - + def get_default_schema_name(self,connection): try: return self._default_schema_name @@ -469,7 +469,7 @@ class OracleDialect(default.DefaultDialect): c = connection.execute ("select COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, DATA_DEFAULT from ALL_TAB_COLUMNS%(dblink)s where TABLE_NAME = :table_name and OWNER = :owner" % {'dblink':dblink}, {'table_name':actual_name, 'owner':owner}) - + while True: row = c.fetchone() if row is None: @@ -570,7 +570,7 @@ class _OuterJoinColumn(sql.ClauseElement): __visit_name__ = 'outer_join_column' def __init__(self, column): self.column = column - + class OracleCompiler(compiler.DefaultCompiler): """Oracle compiler modifies the lexical structure of Select statements to work under non-ANSI configured Oracle databases, if @@ -587,7 +587,7 @@ class OracleCompiler(compiler.DefaultCompiler): def __init__(self, *args, **kwargs): super(OracleCompiler, self).__init__(*args, **kwargs) self.__wheres = {} - + def default_from(self): """Called when a ``SELECT`` statement has no froms, and no ``FROM`` clause is to be appended. @@ -612,7 +612,7 @@ class OracleCompiler(compiler.DefaultCompiler): binary.left = _OuterJoinColumn(binary.left) elif binary.right.table is join.right: binary.right = _OuterJoinColumn(binary.right) - + if join.isouter: if where is not None: self.__wheres[join.left] = self.__wheres[parentjoin] = (sql.and_(VisitOn().traverse(join.onclause, clone=True), where), parentjoin) @@ -623,24 +623,24 @@ class OracleCompiler(compiler.DefaultCompiler): self.__wheres[join.left] = self.__wheres[parentjoin] = (sql.and_(join.onclause, where), parentjoin) else: self.__wheres[join.left] = self.__wheres[join] = (join.onclause, join) - + return self.process(join.left, asfrom=True) + ", " + self.process(join.right, asfrom=True) - + def get_whereclause(self, f): if f in self.__wheres: return self.__wheres[f][0] else: return None - + def visit_outer_join_column(self, vc): return self.process(vc.column) + "(+)" - + def visit_sequence(self, seq): return self.dialect.identifier_preparer.format_sequence(seq) + ".nextval" - + def visit_alias(self, alias, asfrom=False, **kwargs): """Oracle doesn't like ``FROM table AS alias``. Is the AS standard SQL??""" - + if asfrom: return self.process(alias.original, asfrom=asfrom, **kwargs) + " " + self.preparer.format_alias(alias, self._anonymize(alias.name)) else: @@ -661,11 +661,11 @@ class OracleCompiler(compiler.DefaultCompiler): if not orderby: orderby = list(select.oid_column.proxies)[0] orderby = self.process(orderby) - + oldselect = select select = select.column(sql.literal_column("ROW_NUMBER() OVER (ORDER BY %s)" % orderby).label("ora_rn")).order_by(None) select._oracle_visit = True - + limitselect = sql.select([c for c in select.c if c.key!='ora_rn']) if select._offset is not None: limitselect.append_whereclause("ora_rn>%d" % select._offset) @@ -690,7 +690,7 @@ class OracleCompiler(compiler.DefaultCompiler): class OracleSchemaGenerator(compiler.SchemaGenerator): def get_column_specification(self, column, **kwargs): colspec = self.preparer.format_column(column) - colspec += " " + column.type.dialect_impl(self.dialect, _for_ddl=True).get_col_spec() + colspec += " " + column.type.dialect_impl(self.dialect, _for_ddl=column).get_col_spec() default = self.get_column_default_string(column) if default is not None: colspec += " DEFAULT " + default @@ -719,7 +719,7 @@ class OracleIdentifierPreparer(compiler.IdentifierPreparer): name = re.sub(r'^_+', '', savepoint.ident) return super(OracleIdentifierPreparer, self).format_savepoint(savepoint, name) - + dialect = OracleDialect dialect.statement_compiler = OracleCompiler dialect.schemagenerator = OracleSchemaGenerator |