在 Oracle 数据库中保存数组
Saving array in Oracle db
我需要在列中保存一个数组。我目前正在创建一个类型作为 VARRAY 并使用可以正常工作的类型。但是,当我查询 table IN PYTHON(它在数据库上工作正常)时,该数组字段无法转换为 python 数组。
我尝试更改 python 脚本中 sql 查询的类型,但没有任何效果
CREATE OR REPLACE TYPE params_array IS VARRAY(25) of number(25);
create TABLE dependencies
(
job_name varchar2(15),
parameters params_array,
function_name varchar2(225)
)
Select parameters from dependencies:
预期结果:
([10,10])
实际:
(cx_Oracle.Object SYS.PARAMS_ARRAY 在 0x7fd9620d02b0)
要将 Oracle 集合对象转换为 cx_Oracle
内的 Python 列表,请使用 .aslist()
方法:
>>> c = conn.cursor()
>>> for row in c.execute("SELECT parameters FROM dependencies"):
... print(row[0].aslist())
...
[10, 20]
最后,真的 不要在 SYS
模式中创建对象,正如您显然已经对 PARAMS_ARRAY
类型所做的那样。这会干扰 Oracle 数据库的 运行。如果您一直在此模式中创建对象,Oracle 也可以拒绝支持您。数据库内置的任何其他模式可能也是如此。
我需要在列中保存一个数组。我目前正在创建一个类型作为 VARRAY 并使用可以正常工作的类型。但是,当我查询 table IN PYTHON(它在数据库上工作正常)时,该数组字段无法转换为 python 数组。
我尝试更改 python 脚本中 sql 查询的类型,但没有任何效果
CREATE OR REPLACE TYPE params_array IS VARRAY(25) of number(25);
create TABLE dependencies
(
job_name varchar2(15),
parameters params_array,
function_name varchar2(225)
)
Select parameters from dependencies:
预期结果:
([10,10])
实际:
(cx_Oracle.Object SYS.PARAMS_ARRAY 在 0x7fd9620d02b0)
要将 Oracle 集合对象转换为 cx_Oracle
内的 Python 列表,请使用 .aslist()
方法:
>>> c = conn.cursor()
>>> for row in c.execute("SELECT parameters FROM dependencies"):
... print(row[0].aslist())
...
[10, 20]
最后,真的 不要在 SYS
模式中创建对象,正如您显然已经对 PARAMS_ARRAY
类型所做的那样。这会干扰 Oracle 数据库的 运行。如果您一直在此模式中创建对象,Oracle 也可以拒绝支持您。数据库内置的任何其他模式可能也是如此。