Python试图将字典插入postgres数据库,看到keyerror

2024-10-03 17:20:05 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试将词典插入postgres数据库,出现错误: KeyError:“longPositionPercentage”

url = 'https://demo-api.example.com/gateway/deal/example?'
    response = requests.get(url, params=params, headers=headers)
    result=response.json()
    #print(result)
    for item in result['clientSentiments']:
            print(item)
    cursor = conn.cursor()
    cursor.execute("""INSERT INTO sentiment_history
                      (client_sentiment_long,client_sentiment_short,marketid) 
                      VALUES (%(longPositionPercentage)s,
                              %(shortPositionPercentage)s,
                              %(marketId)s,);""",result)
    conn.commit()
    print(datetime.now(), cursor.rowcount, "record inserted/updated")
     # Close the connection
    conn.close()

我试图保存到数据库的词典示例:

{u'shortPositionPercentage': 35.0, u'longPositionPercentage': 65.0, u'marketId': u'2YRTND'}
{u'shortPositionPercentage': 36.0, u'longPositionPercentage': 64.0, u'marketId': u'SE30'}
{u'shortPositionPercentage': 30.0, u'longPositionPercentage': 70.0, u'marketId': u'USDHUF'}
{u'shortPositionPercentage': 17.0, u'longPositionPercentage': 83.0, u'marketId': u'ETHXBT'}

Tags: 数据库urlexampleresponseparamsresultconncursor
1条回答
网友
1楼 · 发布于 2024-10-03 17:20:05

试着用这样的方法:

import psycopg2
import pandas as pd
import json


conn = psycopg2.connect("dbname='yyy' user='yyy' host='yyyy' password='yyyy'")
cur = conn.cursor()

f='{"clientSentiments": [{"shortPositionPercentage": 35.0, "longPositionPercentage": 65.0, "marketId": "2YRTND"}, {"shortPositionPercentage": 35.0, "longPositionPercentage": 65.0, "marketId": "SE30"}]}'
data = json.loads(f)

for k in data['clientSentiments']:
  columns = ['client_sentiment_long','client_sentiment_short','marketid']
  columns = ",".join([str(s) for s in list(columns)])
  values = ",".join(["'"+str(s)+"'" for s in list(k.values())])
  sql = "INSERT INTO sentiment_history (%s)  VALUES  (%s) " % (columns , values)
  print(sql)
  cur.execute(sql)

conn.commit() 
conn.close() 

相关问题 更多 >