请帮助。我的将数据插入数据库的代码返回一条错误消息:
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']
任何有关如何解决此问题的帮助将不胜感激。谢谢。
答案 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)