在 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 也可以拒绝支持您。数据库内置的任何其他模式可能也是如此。