TypeError:在我的项目上没有足够的参数用于格式化字符串

2024-04-25 23:44:04 发布

您现在位置:Python中文网/ 问答频道 /正文

请帮忙。将数据插入数据库的代码返回错误消息:

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

TypeError: not enough arguments for format string.

代码是

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'] 任何关于如何解决这个问题的帮助都将不胜感激。谢谢。你知道吗


Tags: 数据代码datadatetickerinsertvaluesvolume
1条回答
网友
1楼 · 发布于 2024-04-25 23:44:04

该错误通知您,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)

相关问题 更多 >