《cx oracle 返回字典》正文开始,本次阅读大概5分钟。
CX Oracle是Python连接Oracle数据库的模块,它提供了方便快捷的方法来连接和操作Oracle数据库。使用CX Oracle查询数据库时,我们常常会需要将查询结果以字典形式返回。下面将详细介绍如何使用CX Oracle实现查询结果以字典方式返回。
使用CX Oracle的cursor对象的fetchall()方法可以一次性获取查询结果中的所有数据,并将结果以元组的形式返回。我们可以使用以下代码获取查询结果。
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('SERVER', 'PORT', service_name='DATABASENAME')
conn = cx_Oracle.connect(user='USERNAME', password='PASSWORD', dsn=dsn_tns)
cursor = conn.cursor()
sql = "SELECT * FROM EMPLOYEE"
cursor.execute(sql)
result = cursor.fetchall()
以上代码我们获取了EMPLOYEE表中的所有数据,查询结果以元组的形式存储在result变量中。接下来我们将使用Python的字典类型将查询结果转换成字典。
在转换过程中我们首先需要获取查询结果中的列名和数据类型信息。我们对创建的cursor对象使用description属性可以获取查询结果每一列的名称和数据类型。使用以下代码可以获取列名和数据类型列表:
columns = [i[0] for i in cursor.description]
types = [i[1] for i in cursor.description]
接下来我们使用Python的zip()方法将列名和数据类型列表合并成一个元组的列表。然后我们使用Python的列表推导式将查询结果转换成字典形式。我们首先建立一个空列表,然后使用for循环遍历查询结果元组的每一行数据。在循环的每一次迭代中,我们将该行数据使用zip()方法和列名列表结合,形成一个元组的列表,并使用Python的dict()方法将元组列表转换成字典。最后将转换后的字典添加到结果列表中。
results = []
for row in result:
row_dict = dict(zip(columns, row))
results.append(row_dict)
到此为止,我们成功将查询结果以字典形式返回了。完整的代码如下所示:
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('SERVER', 'PORT', service_name='DATABASENAME')
conn = cx_Oracle.connect(user='USERNAME', password='PASSWORD', dsn=dsn_tns)
cursor = conn.cursor()
sql = "SELECT * FROM EMPLOYEE"
cursor.execute(sql)
result = cursor.fetchall()
columns = [i[0] for i in cursor.description]
types = [i[1] for i in cursor.description]
results = []
for row in result:
row_dict = dict(zip(columns, row))
results.append(row_dict)
使用以上代码,我们可以轻松地将CX Oracle查询结果以字典形式返回。这种方法在查询结果比较复杂或包含多表连接时特别有用。