python - 如何使用 Cx_Oracle Python 从 Oracle SQL 数据库中检索压缩数据?
问题描述
假设我正在执行一个非常复杂的查询,并且我想使用 Python 中的 Cx_Oracle 检索查询结果。
现在我使用这些行检索数据:
result = cur_out.getvalue()
raw_data = result.fetchall()
当我看到 raw_data 里面有什么时,我得到了一个非常大的包含查询结果的元组列表(数百万个观察值)。这些结果没有被压缩:
raw_data = [("Renult Kangoo 2008", "SPEED", 123),
("Renult Kangoo 2008", "SPEED", 125),
("Renult Kangoo 2008", "WEIGH", 1231),
("Renult Kangoo 2008", "SPEED", 112)..]
正如你所看到的,通过创建对应的字典可以很容易地压缩这些数据
{"Renult Kangoo 2008":1,
"SPEED":2,
"WEIGHT"3}
现在,我将不再使用重复字符检索一百万个观察值,而是使用重复数字,这将使数据传输更小,并降低检索所有数据的速度。
我想实现诸如 zip 或 rar 压缩之类的东西。这是在 Cx_Oracle 模块中以某种方式实现的吗?
如果没有,是否有任何解决方法可以解决此问题并提高数据传输效率。
当前的解决方法
现在我只在一个查询中检索汽车 ID 和变量 ID,以及它们的值。
在其他查询中,我正在检索汽车 ID 和汽车名称,在其他查询中,我检索变量 ID 和变量名称。
后来,在客户端上,我映射了比发送数百万行重复数据更耗时的值。
解决方案
您可以在查询中进行各种映射以返回不同的值,例如使用 CASE 或 REPLACE 子句或其他子句。您还可以在 PL/SQL 块中进行各种映射。
推荐阅读
- html - 选择下拉菜单未在 ng-model 中设置值
- html - CSS, inject line break after certain number of symbols
- swift - 如何在带有动画的 NSStackView 中添加视图?
- java - 如何使用java在elasticsearch中与多个setQuery?
- java - 对 AtomicReference 持有的对象执行 equals 和 hashcode 的正确方法
- php - php xml SimpleXMLElement addChild 大数据破坏 xml
- angularjs - 有效的正则表达式不适用于 AngularJS
- python - 使用 isin 函数后,我无法在 pandas Dataframe 上使用 filter 函数吗?
- android - MutableList 不添加新值 Kotlin
- dialogflow-es - Dialogflow - Google Assistant:@sys.any 实体未捕获数字序列