Python 使用matplotlib从SQL(MariaDB)打印表值

Python 使用matplotlib从SQL(MariaDB)打印表值,python,mysql,matplotlib,mariadb,Python,Mysql,Matplotlib,Mariadb,我想提取两列数据,并使用它们作为值在matplotlib上绘制直方图。我已经尽可能地遵循了在中找到的答案,只是在几个方面有所不同(即使用的SQL模块)。但是,我的脚本运行时出错: Traceback (most recent call last): File "plot_script.py", line 22, in <module> for row in result: TypeError: 'NoneType' object is not iterable 更新:

我想提取两列数据,并使用它们作为值在matplotlib上绘制直方图。我已经尽可能地遵循了在中找到的答案,只是在几个方面有所不同(即使用的SQL模块)。但是,我的脚本运行时出错:

Traceback (most recent call last):
  File "plot_script.py", line 22, in <module>
    for row in result:
TypeError: 'NoneType' object is not iterable
更新: 我还打印了使用另一个python脚本获得的数据,以确定从SQL查询中获得的数据。终端打印:
Decimal('2479.00')、(u'13:15',Decimal('3182.00')、(u'13:20',Decimal('3076.00')、(u'13:25',Decimal('2795.00')、(u'13:30',Decimal('3457.00')、(u'13:35',Decimal('2515.00')、(u'13:40',Decimal 3006.00')、(u'13:45',Decimal('3618.00')、(u'13:50',Decimal Decimal('3857.00'))和更多类似数据代码)]>

鉴于此“十进制”数据类型可能会导致此问题,我如何解决它


我已经将python脚本的一行修改为
data.append(int(float(row[1]))
,但它仍然返回一个错误
回溯(最近一次调用):文件“test_select.py”,第19行,在data.append(int(float(row[1])TypeError:float()参数必须是字符串或数字
不要将对象分配给
execute()
调用,但只需迭代指定的游标对象:

cur = mariadb_connection.cursor()
cur.execute("SELECT time, voltage FROM sensortable")

data = []
xTickMarks = []

for row in cur.fetchall():
    data.append(int(row[1]))
    xTickMarks.append(str(row[0]))

您的结果似乎是
None
。检查您的查询是否确实返回了记录,可能是在Python之外的控制台中。我已经直接在SQL程序中使用
“从sensortable中选择时间、电压;”
查询了数据库,它按预期为我带来了两列数据。
集合中的152行(0.00秒)
进行更改后,我遇到了另一个错误:
回溯(最后一次调用):data.append(int(row[1])中第23行的文件“plot_script.py”类型错误:int()参数必须是字符串或数字,而不是“NoneType”
请参阅使用更新
fetchall
,将对象名称更改为cur,以避免与实际方法的命名冲突。使用上述建议的更改更新了我的代码。错误仍然为:
回溯(最近一次调用):data.append(int)中第23行的文件“plot_script.py”(第[1]行)类型错误:int()参数必须是字符串或数字,而不是“NoneType”
我还用另一个测试脚本确认了,以查看是否从数据库中提取了此python脚本的更精简版本的结果。这是我的终端输出:
pi@raspberrypi:~/projects$python test\u select.py 10:285964.00 10:296092.00 10:306407.00 10:39,2251.00 10:40,2489.00 10:418927.00 10:426146.00 10:438172.00 10:448053.00 10:457720.00 10:467107.00 10:476833.00 10:488949.00 10:498905.00 10:508923.00(以及更多数据以两列打印…)
你有一个raspberry pi上的MarieDB!非常有趣。test_select.py中有什么东西可以这样提取数据?在上面的脚本中使用该实现。
cur = mariadb_connection.cursor()
cur.execute("SELECT time, voltage FROM sensortable")

data = []
xTickMarks = []

for row in cur.fetchall():
    data.append(int(row[1]))
    xTickMarks.append(str(row[0]))