TypeError:我的项目中的格式字符串参数不足

时间:2018-12-15 12:54:50

标签: python mysql

请帮助。我的将数据插入数据库的代码返回一条错误消息:

  

insertVar =("INSERT INTO %a ( ticker, date, openPrice, dayHigh, dayLow, closePrice, volume ) VALUES ( %s, %s, %s, %s, %s, %s, %s)" %(stripedTicker))

     

TypeError:格式字符串的参数不足。

代码是

def insertData (data):
    insertVar =("INSERT INTO %a ( ticker, date, openPrice, dayHigh, dayLow, closePrice, volume ) VALUES ( %s, %s, %s, %s, %s, %s, %s)" %(stripedTicker))
    cur.execute(insertVar, data)
    conn.commit()

变量data = ['Access Bank Plc', '2018-12-15', '7.45', '7.50', '7.45', '7.45', '18,152,221'] 任何有关如何解决此问题的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

该错误通知您insertVar变量需要stripedTicker中的8个参数。我猜您的stripedTicker变量仅包含一个格式为%a的参数。 (并且您希望将%s的格式设置为cur.execute()。)

例如,这将起作用

print('%s %s' % ('a', 'b')) # prints 'a b'

但以下内容不会

print('%s %s' % ('a')) # TypeError: not enough arguments for format string

因为%格式化程序希望参数填充每个%s。除非您在%参数的前面添加额外的百分号(%s),否则当前格式化字符串的方法将无效。例如

print('%s %%s' % ('a')) # prints 'a %s'

因此,将额外的%添加到您的%s的...

insertVar = ("INSERT INTO %a ( ticker, date, openPrice, dayHigh, dayLow, closePrice, volume ) \  
    VALUES ( %%s, %%s, %%s, %%s, %%s, %%s, %%s)" % (stripedTicker))

选择另一种格式化方式,例如,使用f字符串:

insertVar = f"INSERT INTO {stripedTicker} ( ticker, date, openPrice, dayHigh, dayLow, closePrice, volume ) \  
    VALUES ( %s, %s, %s, %s, %s, %s, %s)"

.format()

insertVar = "INSERT INTO {} ( ticker, date, openPrice, dayHigh, dayLow, closePrice, volume ) \  
    VALUES ( %s, %s, %s, %s, %s, %s, %s)".format(stripedTicker)