错误:格式字符串的参数不足

时间:2018-04-11 16:20:20

标签: python mysql csv mysql-python

我的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()

当我运行这个时,我不断提高错误类(errorvalue) _mysql_exceptions.ProgrammingError:格式字符串

的参数不足

我有相同数量的列并正确格式化日期。

2 个答案:

答案 0 :(得分:0)

像@pault说的那样,你需要5个项目(因为ON DUPLICATE KEY UPDATE portfolioValue ='%s'到最后)。

只需将您的portfolioValue副本作为第5项,每行。

答案 1 :(得分:0)

更改SQL文本以引用已插入的值(如果插入成功),使用特殊的yum install postgresql96-server postgresql96-contrib 函数,如下所示

VALUES()

然后没有必要传递值的额外第二个副本