所以我试图使用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!")
Run Code Online (Sandbox Code Playgroud)
我一直在收到错误
回溯(最近一次调用最后一次):文件"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"的列,但不能从查询的这一部分引用它.
我把数据库和表放在正确的位置.导致此错误的原因是什么?我找到了一个类似的问题,但我不理解错误,它在不同的背景下有人帮助我理解这一点
Ban*_*dan -2
我认为你需要在值中添加变量,并使用 + 来连接字符串:
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))) + ")")
Run Code Online (Sandbox Code Playgroud)
考虑使用 map 从变量创建字符串,使用 join 将它们连接到一个长字符串。
我什至建议您单独进行,以使其更具可读性:
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 + ")"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5044 次 |
| 最近记录: |