当前位置: 首页 > 知识库问答 >
问题:

表“table”中有一个名为“column”的列,但不能从查询的这一部分引用它

雷晋
2023-03-14

因此,我试图使用for循环将python字典中的数据输入postgres数据库。这是密码

for value in dic:
    domain_desc = value["domain_desc"]
    commodity_desc = value["commodity_desc"]
    statisticcat_desc = value["statisticcat_desc"]
    agg_level_desc = value["agg_level_desc"]
    country_name = value["country_name"]
    state_name = value["state_name"]
    county_name = value["county_name"]
    unit_desc = value["unit_desc"]
    value1 = value["Value"]
    year_val = value["year"]
    cur.execute("INSERT INTO fact_data (domain_desc,commodity_desc,statisticcat_desc,agg_level_desc,country_name,state_name,county_name,unit_desc,value,year) VALUES (domain_desc,commodity_desc,statisticcat_desc,agg_level_desc,country_name,state_name,county_name,unit_desc,value1,year_val)")
    cur.commit()
    print("Success!")

我一直在犯错误

回溯(最近一次调用last):文件“C:/Users/Backup/PycharmProjects/gro app/harvest.py”,第123行,cur格式。执行(“插入事实数据(域描述、商品描述、统计描述、聚集级别描述、国家名称、州名称、县名称、单位描述、价值、年份)值(域描述、商品描述、统计描述、聚集级别描述、国家名称、州名称、县名称、单位描述、价值、年份)”psycopg2。编程错误:“域描述”列不存在第1行:。。。te_name、county_name、unit_desc、value、year)VALUES(domain_des…^提示:在表“事实数据”中有一个名为“domain_desc”的列,但不能从查询的这一部分引用它。

我有数据库和表在正确的地方。是什么导致了这个错误?我发现了一个类似的问题,但我不明白这个错误,它在不同的上下文中有人帮助我理解这个

共有1个答案

公孙弘图
2023-03-14

我认为您需要在值中添加变量,并使用来连接字符串:

cur.execute("INSERT INTO fact_data (domain_desc,commodity_desc,statisticcat_desc,agg_level_desc,country_name,state_name,county_name,unit_desc,value,year) VALUES (" + ', '.join(map(str, (domain_desc,commodity_desc,statisticcat_desc,agg_level_desc,country_name,state_name,county_name,unit_desc,value1,year_val))) + ")")

考虑使用map从变量中创建字符串,将它们连接到长字符串中。

我甚至建议你分开做,让它更具可读性:

dict_value = ', '.join(map(str, (domain_desc,commodity_desc,statisticcat_desc,agg_level_desc,country_name,state_name,county_name,unit_desc,value1,year_val)))

cur.execute("INSERT INTO fact_data (domain_desc,commodity_desc,statisticcat_desc,agg_level_desc,country_name,state_name,county_name,unit_desc,value,year) VALUES (" + dict_value + ")"
 类似资料:
  • 我试图学习使用JDBC对PostgreSQL数据库进行更改。我想尝试将数据插入表中。 运行此操作时,我遇到一个错误: 错误:列“column1”不存在 提示:表“my_table”中有一个名为“column1”的列,但不能从查询的这一部分引用它。 如果该列存在于表中,为什么会出现错误?

  • 我有一张“会议”桌: 我想添加新记录,但前提是它不存在。这就是我使用

  • 需要更新和记录数据,获取此错误 如何在表中插入所有“upt”行?一定看起来像 对于每个订单,必须使用相同的orderid从“upt”列创建jsonb

  • 问题内容: 我想查询一个表的名称列表,该表显示在另一个表的字段中。 例子: table1.title>老虎伍兹作弊,老虎伍兹崩溃,布拉德·皮特很棒,麦当娜领养,布拉德·皮特拍电影 table2.names>老虎伍兹,布拉德·皮特,麦当娜 这就是两个表和值。我想编写一个查询,计算来自table2.names的哪些名称最经常出现在table1.title中 有人建议使用内部联接,但我无法使它正常工作…

  • 我有两张有相同字段桌子。(请不要责怪设计)。 以下仅针对示例架构 表A ID 姓名 电话 键 所以,我想在一次查询中从满足条件“keys”的表A或表B中查询id、name,返回字段只有“id”和“name”,不管它是从表A或表B 中查询 从TABELA中选择a.id、a.name、b.id、b.name作为a,TABLEB作为b,其中a.keys=“1”或b.keys=“1” 它将重复的id、na

  • 问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以