【问题标题】:Turning off automatic conversion to Decimal in SqlAlchemy with Oracle DB使用 Oracle DB 在 SqlAlchemy 中关闭自动转换为十进制
【发布时间】: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


【解决方案1】:

我也在 SqlAlchemy 列表上问过这个问题,得到了 good answer。没办法,但开发商很快就加了一个。此外,他建议使用cDecimal python 库作为标准库十进制模块的更快、插入式替代品。

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 2018-01-05
    • 2014-09-04
    • 2018-04-07
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多