本文整理汇总了Python中cx_Oracle.NCLOB属性的典型用法代码示例。如果您正苦于以下问题:Python cx_Oracle.NCLOB属性的具体用法?Python cx_Oracle.NCLOB怎么用?Python cx_Oracle.NCLOB使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类cx_Oracle
的用法示例。
在下文中一共展示了cx_Oracle.NCLOB属性的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: preQuery
# 需要导入模块: import cx_Oracle [as 别名]
# 或者: from cx_Oracle import NCLOB [as 别名]
def preQuery(self, cursor):
typeMap = {"integer": cx_Oracle.NUMBER,
"text": cx_Oracle.NCLOB,
"varchar": cx_Oracle.STRING,
"timestamp": cx_Oracle.TIMESTAMP}
self.var = cursor.var(typeMap[self.typeID])
return self.var
示例2: mapArgs
# 需要导入模块: import cx_Oracle [as 别名]
# 或者: from cx_Oracle import NCLOB [as 别名]
def mapArgs(self, args):
realArgs = []
for arg in args:
if isinstance(arg, str):
# We use NCLOB everywhere, so cx_Oracle requires a unicode-type
# input. But we mostly pass around utf-8 encoded bytes at the
# application layer as they consume less memory, so do the
# conversion here.
arg = arg.decode('utf-8')
if isinstance(arg, unicode) and len(arg) > 1024:
# This *may* cause a type mismatch, but none of the non-CLOB
# strings that we're passing would allow a value this large
# anyway. Smaller strings will be automatically converted by
# the bindings; larger ones will generate an error. I'm not
# sure why cx_Oracle itself doesn't just do the following hack
# automatically and internally for larger values too, but, here
# it is:
v = self.var(cx_Oracle.NCLOB, len(arg) + 1)
v.setvalue(0, arg)
elif isinstance(arg, datetime.datetime):
# By default when cx_Oracle is passed a datetime object it maps it to a
# cx_Oracle.DATETIME variable which does not serialize fraction seconds
# into the query, or call, arguments. However, for high volume systems,
# we really want sub-second resolution for things like the job queue,
# so we want to serialize datetime as cx_Oracle.TIMESTAMP.
v = self.var(cx_Oracle.TIMESTAMP)
v.setvalue(0, arg)
else:
v = arg
realArgs.append(v)
return realArgs
示例3: __init__
# 需要导入模块: import cx_Oracle [as 别名]
# 或者: from cx_Oracle import NCLOB [as 别名]
def __init__(self,
auto_convert_lobs=True,
threaded=True,
coerce_to_unicode=False,
coerce_to_decimal=True,
arraysize=50,
**kwargs):
self._pop_deprecated_kwargs(kwargs)
OracleDialect.__init__(self, **kwargs)
self.threaded = threaded
self.arraysize = arraysize
self.auto_convert_lobs = auto_convert_lobs
self.coerce_to_unicode = coerce_to_unicode
self.coerce_to_decimal = coerce_to_decimal
cx_Oracle = self.dbapi
if cx_Oracle is None:
self._include_setinputsizes = {}
self.cx_oracle_ver = (0, 0, 0)
else:
self.cx_oracle_ver = self._parse_cx_oracle_ver(cx_Oracle.version)
if self.cx_oracle_ver < (5, 0) and self.cx_oracle_ver > (0, 0, 0):
raise exc.InvalidRequestError(
"cx_Oracle version 5.0 and above are supported")
self._has_native_int = hasattr(cx_Oracle, "NATIVE_INT")
self._include_setinputsizes = {
cx_Oracle.NCLOB, cx_Oracle.CLOB, cx_Oracle.LOB,
cx_Oracle.BLOB, cx_Oracle.FIXED_CHAR,
}
self._is_cx_oracle_6 = self.cx_oracle_ver >= (6, )
示例4: _generate_connection_outputtype_handler
# 需要导入模块: import cx_Oracle [as 别名]
# 或者: from cx_Oracle import NCLOB [as 别名]
def _generate_connection_outputtype_handler(self):
"""establish the default outputtypehandler established at the
connection level.
"""
dialect = self
cx_Oracle = dialect.dbapi
number_handler = _OracleNUMBER(asdecimal=True).\
_cx_oracle_outputtypehandler(dialect)
float_handler = _OracleNUMBER(asdecimal=False).\
_cx_oracle_outputtypehandler(dialect)
def output_type_handler(cursor, name, default_type,
size, precision, scale):
if default_type == cx_Oracle.NUMBER:
if not dialect.coerce_to_decimal:
return None
elif precision == 0 and scale in (0, -127):
# ambiguous type, this occurs when selecting
# numbers from deep subqueries
return cursor.var(
cx_Oracle.STRING,
255,
outconverter=dialect._detect_decimal,
arraysize=cursor.arraysize)
elif precision and scale > 0:
return number_handler(
cursor, name, default_type, size, precision, scale
)
else:
return float_handler(
cursor, name, default_type, size, precision, scale
)
# allow all strings to come back natively as Unicode
elif dialect.coerce_to_unicode and \
default_type in (cx_Oracle.STRING, cx_Oracle.FIXED_CHAR):
return cursor.var(
util.text_type, size, cursor.arraysize
)
elif dialect.auto_convert_lobs and default_type in (
cx_Oracle.CLOB, cx_Oracle.NCLOB, cx_Oracle.BLOB
):
return cursor.var(
default_type, size, cursor.arraysize,
outconverter=lambda value: value.read()
)
return output_type_handler
示例5: __init__
# 需要导入模块: import cx_Oracle [as 别名]
# 或者: from cx_Oracle import NCLOB [as 别名]
def __init__(self,
auto_convert_lobs=True,
threaded=True,
coerce_to_unicode=False,
coerce_to_decimal=True,
arraysize=50,
**kwargs):
self._pop_deprecated_kwargs(kwargs)
OracleDialect.__init__(self, **kwargs)
self.threaded = threaded
self.arraysize = arraysize
self.auto_convert_lobs = auto_convert_lobs
self.coerce_to_unicode = coerce_to_unicode
self.coerce_to_decimal = coerce_to_decimal
cx_Oracle = self.dbapi
if cx_Oracle is None:
self._include_setinputsizes = {}
self.cx_oracle_ver = (0, 0, 0)
else:
self.cx_oracle_ver = self._parse_cx_oracle_ver(cx_Oracle.version)
if self.cx_oracle_ver < (5, 2) and self.cx_oracle_ver > (0, 0, 0):
raise exc.InvalidRequestError(
"cx_Oracle version 5.2 and above are supported")
self._has_native_int = hasattr(cx_Oracle, "NATIVE_INT")
self._include_setinputsizes = {
cx_Oracle.NCLOB, cx_Oracle.CLOB, cx_Oracle.LOB,
cx_Oracle.NCHAR, cx_Oracle.FIXED_NCHAR,
cx_Oracle.BLOB, cx_Oracle.FIXED_CHAR, cx_Oracle.TIMESTAMP,
_OracleInteger, _OracleBINARY_FLOAT, _OracleBINARY_DOUBLE
}
self._paramval = lambda value: value.getvalue()
# https://github.com/oracle/python-cx_Oracle/issues/176#issuecomment-386821291
# https://github.com/oracle/python-cx_Oracle/issues/224
self._values_are_lists = self.cx_oracle_ver >= (6, 3)
if self._values_are_lists:
cx_Oracle.__future__.dml_ret_array_val = True
def _returningval(value):
try:
return value.values[0][0]
except IndexError:
return None
self._returningval = _returningval
else:
self._returningval = self._paramval
self._is_cx_oracle_6 = self.cx_oracle_ver >= (6, )