将numpy阵列安装到duckdb数组列中

问题描述 投票:0回答:1
如何更新一个带有numpy数组(从python函数返回)的duckdb数组列,其中一个条件匹配的行?

在示例中,我想在表示例的第二行中分配

new_array

的值,也就是

WHERE id = 2
匹配的行。
import duckdb
import numpy as np

con = duckdb.connect()
con.sql("CREATE TABLE example (id INTEGER, vec FLOAT[3]);")
con.sql("INSERT INTO example VALUES (1, array_value(1.0::FLOAT, 2.0::FLOAT, 3.0::FLOAT));")
con.sql("INSERT INTO example VALUES (2, NULL);")

con.sql("SELECT * FROM example;").fetchall()

new_array = np.array([4,5,6], dtype=np.float32)
new_array

,我发现这比我预期的要快。一个人可以从数组中选择。这给出了一列。然后,可以使用聚合函数
python arrays duckdb
1个回答
0
投票
将列汇总到列表中,并使用通常的SQL UDPATE语句更新数组值:

con.sql("SELECT * from new_array;")
con.sql("UPDATE example SET vec = (SELECT list(column0) FROM new_array) WHERE id = 2;")
con.sql("SELECT * FROM example;").fetchall()


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.