所以我面临以下问题。我正在使用python进行一些计算。这些计算的结果是一系列独特的值。现在我想在不使用循环的情况下将这些值添加到PostgreSQL表中。一个简单的例子:
Python中的计算结果:
[1.2, 2.4, 3.6, 4.8]
PostgreSQL表:
example_table
id | date | values
-------------------------
1 | 2016-11-01 |
2 | 2016-11-01 |
3 | 2016-11-01 |
4 | 2016-11-01 |
5 | 2017-11-01 |
6 | 2017-11-01 |
我希望实现的是将上述值添加到表格中的“值”列中,日期为“2016-11-01”。数组的长度始终与所选表的长度相同。结果示例:
example_table
id | date | values
-------------------------
1 | 2016-11-01 | 1.2
2 | 2016-11-01 | 2.4
3 | 2016-11-01 | 3.6
4 | 2016-11-01 | 4.8
5 | 2017-11-01 |
6 | 2017-11-01 |
这也适用于这种情况; python数组:
[1.2, 2,4]
然后将上述值添加到表格中的“值”列中,日期为“2017-11-01”。 结果:
example_table
id | date | values
-------------------------
1 | 2016-11-01 |
2 | 2016-11-01 |
3 | 2016-11-01 |
4 | 2016-11-01 |
5 | 2017-11-01 | 1.2
6 | 2017-11-01 | 2.4
到目前为止我尝试的是:
INSERT INTO example_table (values) VALUES ('1.2'), ('2.4'), ('3.6'), ('4.8')
哪个有效,但我无法添加WHERE语句,因为INSERT INTO不支持此功能。 使用UPDATE时,我设法将整个数组添加到每一行,或者将第一个值添加到每一行,但不是每行的值数组。我无法将值链接到ID,但值的顺序始终与所选行的顺序相同。
这似乎是一个相当简单和基本的操作,但我没有让它正常工作。如何使用WHERE语句一次将此数组值添加到列?我正在通过Python发送SQL请求。
答案 0 :(得分:0)
你不能使用带有插入的where子句。
要获得所需结果,您需要使用更新。 a-horse声明了重要的是要知道您的数组是否会保留您在示例中建议的顺序。如果是这样,您可以遍历它并执行更新。类似的东西:
i=1;
for a in [1.2, 2.4, 3.6, 4.8]:
UPDATE example_table set values = a where id = i ;
i += 1;
(原谅我的Python)