python-3.x - 使用带有提供的文本字符串的 INSERT INTO 和来自另一个表的 select *

标签 python-3.x postgresql psycopg2

我正在尝试创建一个将多个表编译成一个表的表,这个新表将有一个列存储每行所来自的表的名称。

(我正在将来自不同时间窗口的多个时间序列结果编译到一个汇总表中,但时间序列标签必须作为一个新列包含在内)

我正在使用 pyscopg2 通过 python 将查询传递给 postgres,要作为文本存储的表名是在 Python 中创建并从 Python 传递的。

我的查询在一个独立的本地 postgres 数据库上运行,因此我不担心将表名作为参数传递。是的,我知道这是不好的形式,但现在我只需要让它正常工作。

我希望完成的伪代码:

INSERT INTO destination_table VALUES ('string of source table name', select * from source_table)

应该注意的是,目标表已使用正确的维度/数据类型创建以接受数据。 {} 中的名称是我从 python 传递的参数。

我尝试过的实际代码:

WITH upd as (SELECT many, columns, here… FROM {table_to_compile}  where dep_count >=4)
  INSERT INTO destination_table VALUES ('{table_to_compile}',(SELECT * from upd))

上面的代码返回一个错误,即“子选择查询应该只返回一列”

我已经使用 INSERT INTO 尝试了不同的组合,但我不会发布我测试过的每个查询,因为我希望我的目标已被清楚地描述。

最佳答案

您不能使用 values(expression, subquery),但您可以像这样向 select 添加常量:

INSERT INTO destination_table
select 'string of source table name' as column_name, * 
from source_table;

关于python-3.x - 使用带有提供的文本字符串的 INSERT INTO 和来自另一个表的 select *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687797/

相关文章:

json - 如何在数据库中定义和存储数据结构属性

json - 如何将 $ilike 与 $contains 结合使用在 sequelize 中的对象数组上?

python - psycopg2.OperationalError : FATAL: unsupported frontend protocol 1234. 5679 : server supports 2. 0 到 3.0

python - psycopg2 在 executemany 语句中插入表名

python - 使用 psycopg2 将 pandas DataFrame 快速插入到 Postgres DB 中

python - python 2的Inspect模块中的签名方法

python-3.x - 使用出现次数最多的像素值的图像过滤器

python - pycharm 上的 anaconda ver5.3.1 缺少必需的依赖项 ['numpy' ]

python - 如何使用另一个数据框中最近的日期填充一个数据框中的日期列

postgresql - 如何仅返回与 Typeorm 的关系的某些列