【发布时间】:2012-02-27 13:17:45
【问题描述】:
我如何告诉 SqlAlchemy 在查询 Oracle 数据库时不将 Oracle Number 字段转换为 Decimal?
我正在尝试用 SqlAlchemy 替换一堆包含手动 sql 语句的代码。许多查询处理从数据库中获取 500 列数字。使用池连接的 SQL alchemy 版本慢了 10 倍,几乎可以肯定是因为转换为十进制。
>>> engine = sqlalchemy.create_engine("oracle+cx_oracle://"+connString)
>>> conn = engine.pool.connect()
>>> cursor = conn.cursor()
>>> cursor.execute("""SELECT * FROM MY_TABLE""")
>>> r = cursor.fetchone()
>>> r[-1]
Decimal('0.878935370620606')
我如何告诉方言不要转换为十进制? (旧代码不使用小数,所以精度损失并不重要。10倍减速的因素是。)
【问题讨论】:
-
我尝试将
engine.dialect.supports_native_decimal设置为False,但这不起作用。我猜 SqlAlchemy 正在预先计算转换函数。
标签: oracle sqlalchemy decimal