python - cx_oracle 7.2.1中转换execute_query结果集的方法
问题描述
我们正在尝试将我们的应用程序从 cx oracle 迁移到会话池会话中,但执行查询的返回池似乎有所不同。
cx oracle 版本是 7.2.1
有没有办法将结果转换为记录列表或集合/字典列表?
使用 Normal Session,返回的是Record 列表。使用会话池,返回的是tuple 列表。
这是正常会话中的查询代码
def execute_query(self, sql_query, parameters=None):
if parameters is None:
self.cursor.execute(sql_query)
else:
self.cursor.execute(sql_query, parameters)
result = self.cursor.fetchall()
return result
这是会话池中查询的代码
def execute_query(self, sql_query, parameters=None):
if parameters is None:
self.cursor.execute(sql_query)
self.cursor.rowfactory = lambda *args: dict(zip([d[0].lower() for d in self.cursor.description], args))
else:
self.cursor.execute(sql_query, parameters)
self.cursor.rowfactory = lambda *args: dict(zip([d[0].lower() for d in self.cursor.description], args))
result = self.cursor.fetchall()
return result
谢谢你的帮助。
解决方案
好吧,我的解决方案是使用sqlalchemy
and cx_Oracle
,使用sqlalchemy
create connectsession
并执行 sql cmd:
result = self.session.execute(sql_cmd)
return [{k: v for k, v in row.items()} for row in result]
推荐阅读
- ruby-on-rails - 类 ArtistsController 和未初始化的常量 Artist 的超类不匹配
- php - wp_new_user_notification 没有被 wp_insert_user 触发
- sdk - 树莓派设备型号 ID 上的 Google 助理不见了?
- windows-10 - 在 Remoteapp 中使用 ALT-TAB 时“alt”键卡住
- javascript - 菜单打开时如何在外部单击时隐藏菜单
- python - 向数据框添加值并导出
- reactjs - Yarn 可以列出所有可用的脚本吗?
- mysql - 为什么这个递归 concat 会产生:数据太长
- django - 使用一键传输许多参数。姜戈
- java - 如何正确关闭 HikariCP 连接池