错误:没有足够的参数用于格式化字符串

w51jfk4q  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(382)

我的csv文件包含如下数据:

Date,portfolioValue,pID,FinancialInstrument
2018-03-27,4937.395022140785,1,Oil
2018-03-28,4937.395022140785,1,Oil

我的插入执行代码如下:

file = open(portfolio_file,'r')
    csv_data = csv.reader(file, delimiter =',')
    for row in df_header:
        print(row)
        #stmt = ("INSERT INTO PredictionData (Date, Open, Settle, High, Low, HorizonType, InstrumentName, PredictorType) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE Open=%s, Settle=%s, High=%s, Low=%s")
        cursor.execute("INSERT INTO portfolioData(Date, portfolioValue, pID, FinancialInstrument) VALUES (DATE_FORMAT('%s','%%Y-%%m-%%d'), '%s', '%s', '%s') ON DUPLICATE KEY UPDATE portfolioValue ='%s'", row)
        cnx.commit()

当我运行这个时,我不断得到raise errorclass(errorvalue)\u mysql\u exceptions.programmingerror:format string没有足够的参数
我有相同的列数和格式的日期正确。

jaxagkaj

jaxagkaj1#

就像@pault说的,你需要5件物品(因为 ON DUPLICATE KEY UPDATE portfolioValue ='%s' 最后)。
只需为每行复制一份您的portfoliovalue作为第5项。

wljmcqd8

wljmcqd82#

使用特殊的 VALUES() 功能,就像这样

ON DUPLICATE KEY UPDATE portfolioValue = VALUES(portfolioValue)

那么就不需要额外传递第二个值副本

相关问题