【发布时间】:2021-07-11 02:58:33
【问题描述】:
我是全新的,自学成才,所以请原谅我的代码比 pythonic 少,一般的 jankiness,暴露于 mysql 注入并且没有捕获错误,但到目前为止我已经能够编写一个小 python 程序来提取一些关键数据来自 URL 的 JSON 响应并将其通过管道传输到 mysql (mariadb) 数据库中,然后 grafana 提取行并美化数据。
#get varibles from JSON dict
humidity = int(weather['data'][str(siteid)][humi]['v'])
airtemp = float(weather['data'][str(siteid)][air]['v'])
windgusts = int(weather['data'][str(siteid)][windg]['v'])
windspeed = int(weather['data'][str(siteid)][winds]['v'])
windchill = float(weather['data'][str(siteid)][windc]['v'])
dewpoint = float(weather['data'][str(siteid)][dp]['v'])
winddirection = int(weather['data'][str(siteid)][winddir]['v'])
pressure = int(weather['data'][str(siteid)][prs]['v'])
date_got = weather['sites'][0]['datatime']
site = weather['sites'][0]['sitename']
我正在使用上述 10 个变量并将它们放入一个 mysql 表中:
addtodata.execute("INSERT INTO weather (humidity, airtemp, windgusts, windspeed, windchill, \
dewpoint, windirection, pressure, date_got, site) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",\
(humidity, airtemp, windgusts, windspeed, windchill, dewpoint, winddirection, pressure, current_time, site))
db.commit()
一切运行良好,然后我只想添加一个可变的“露点”(它是一个气象站)。
我跳进 phpmyadmin,打开 weather 数据库并在末尾添加一个名为 deltadew 的额外列。使用这种可怕的混乱,我制作了计算变量。
#initiate fudge factor
steel1 = (airtemp / windchill)*0.4
steeltemp = airtemp - steel1
delta1 = steeltemp - dewpoint
deltadew = delta1
所以现在我需要做的(在我看来)就是在VALUES 中添加另一个%s,并将变量deltadew 提供给它。但是我遇到了控制台错误"Column count doesn't match value count at row 1",在此处进行了一些谷歌搜索和搜索(没有人回答 1+1=error 场景)似乎我没有为数量提供足够(或太多)的参数可用的列。
请帮忙。
【问题讨论】:
-
请向我们展示您实际拥有但无法正常工作的代码,而不是您曾经拥有的代码。错误表示字符串中的 %s 数量与元组中的值数量不匹配。
-
我找到了!我将“新”变量添加到
VALUES,但没有添加到INSERT INTO。需要重新阅读我自己的问题才能发现这一点。感谢阅读。
标签: python mysql mariadb grafana