请提供帮助。我将数据插入数据库的代码返回错误消息:
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']
对于如何解决这一问题的任何帮助,我们将不胜感激。谢谢
错误通知您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
因为CCD_ 9格式化器期望自变量填充每个CCD_。除非在%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-string:
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)