简体   繁体   English

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

[英]There is a column named “column” in table “table”, but it cannot be referenced from this part of the query

so im trying to enter data from a python dictionary into a postgres database using a for loop.Heres the code 所以我试图使用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!")

I keep getting the error 我一直在收到错误

Traceback (most recent call last): File "C:/Users/Backup/PycharmProjects/gro-app/harvest.py", line 123, in 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)") psycopg2.ProgrammingError: column "domain_desc" does not exist LINE 1: ...te_name,county_name,unit_desc,value,year) VALUES (domain_des... ^ HINT: There is a column named "domain_desc" in table "fact_data", but it cannot be referenced from this part of the query. 回溯(最近一次调用最后一次):文件“C:/Users/Backup/PycharmProjects/gro-app/harvest.py”,第123行,在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)“)psycopg2.ProgrammingError:列”domain_desc“不存在第1行:。 ..te_name,county_name,unit_desc,value,year)VALUES(domain_des ... ^提示:表“fact_data”中有一个名为“domain_desc”的列,但不能从查询的这一部分引用它。

I have the database and the table in the right place. 我把数据库和表放在正确的位置。 What is causing this error? 导致此错误的原因是什么? I have found a similar question but i dont understand the error and its in a different context Someone help me understand this 我找到了一个类似的问题,但我不理解错误,它在不同的背景下有人帮助我理解这一点

I think you need to add variables inside values, and use + to concatenate strings: 我认为你需要在值中添加变量,并使用+来连接字符串:

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))) + ")")

Consider using map to make strings from your variables, join to join them to a long string. 考虑使用map从变量中创建字符串,连接以将它们连接到长字符串。

I'd even suggest you to do it separately, to make it more readable: 我甚至建议你单独做,以使其更具可读性:

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 + ")"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM