gpt4 book ai didi

python - 使用 python 解析的数据提供 mysql 数据库时出错

转载 作者:行者123 更新时间:2023-11-29 15:03:38 24 4
gpt4 key购买 nike

我使用这段代码将我从网页解析的一些数据提供给 mysql 数据库

c=db.cursor()
c.executemany(
"""INSERT INTO data (SID, Time, Value1, Level1, Value2, Level2, Value3, Level3, Value4, Level4, Value5, Level5, ObsDate)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
clean_data
)

解析后的数据如下所示(有数百行)

clean_data = [(161,00:00:00,8.19,1,4.46,4,7.87,4,6.54,null,4.45,6,2010-04-12),(162,00:00:00,7.55,1,9.52,1,1.90,1,4.76,null,0.14,1,2010-04-12),(164,00:00:00,8.01,1,8.09,1,0,null,8.49,null,0.20,2,2010-04-12),(166,00:00:00,8.30,1,4.77,4,10.99,5,9.11,null,0.36,2,2010-04-12)]

如果我按照上面的方式对数据进行硬编码,mySQL 会接受我的请求(除了一些关于格式的问题)

但是如果变量 clean_data 被定义为解析代码的结果,如下所示:

cleaner = [("""  $!!'""", ')]'),('  $!!', ') etc etc]
def processThis(str,lst):
for find, replace in lst:
str = str.replace(find, replace)
return str
clean_data = processThis(data,cleaner)

然后我得到了可怕的“TypeError:格式字符串没有足够的参数”

在使用格式化选项几个小时后(我对此很陌生),我很困惑......硬编码数据和过程结果之间有什么区别这个函数与 mySQL 一样快?

任何想法都非常感激......

最佳答案

这是一个猜测...

processThis 返回一个字符串。它不返回元组列表。

如果尝试repr(clean_data)会发生什么?我想你会得到类似下面的东西:

"[(161,00:00:00,8.19,1,4.46,4,7.87,4,6.54,null,4.45,6,2010-04-12)]"

这是一个单一的字符串。因此,您向查询传递一个字符串参数,而不是 13 个值。

您的数据解析需要改进。您需要拆分字符串并将值转换为整数、 float 等。

关于python - 使用 python 解析的数据提供 mysql 数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2618030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com