ERROR: Not enough arguments for format string
ERROR: Not enough arguments for format string
我的 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)
_mysql_exceptions.ProgrammingError: 格式字符串
的参数不足
我有相同数量的列并且正确地格式化了日期。
如@pault 所说,您需要 5 件物品(因为 ON DUPLICATE KEY UPDATE portfolioValue ='%s'
接近尾声)。
只需复制您的投资组合价值作为每行的第 5 项。
更改 SQL 文本以引用将要插入的值(如果插入成功),使用特殊的 VALUES()
函数,例如
ON DUPLICATE KEY UPDATE portfolioValue = VALUES(portfolioValue)
那么就不需要额外传递值的第二个副本
我的 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) _mysql_exceptions.ProgrammingError: 格式字符串
的参数不足我有相同数量的列并且正确地格式化了日期。
如@pault 所说,您需要 5 件物品(因为 ON DUPLICATE KEY UPDATE portfolioValue ='%s'
接近尾声)。
只需复制您的投资组合价值作为每行的第 5 项。
更改 SQL 文本以引用将要插入的值(如果插入成功),使用特殊的 VALUES()
函数,例如
ON DUPLICATE KEY UPDATE portfolioValue = VALUES(portfolioValue)
那么就不需要额外传递值的第二个副本