繁体   English   中英

由于在 IDLE 中运行我的 Python 代码,我一直得到“无”的结果是谁?

[英]Who do I keep getting "None" as a result of running my Python code in IDLE?

可能是一个愚蠢的问题抱歉。 所以我的数据库中有一个带有 pic 列的表,那里有图片。 我需要随机获取一个,并在被询问时通过我的 Telegram 机器人发布。 我已经通过 MySQL 工作台检查了与 DB 的连接,它很好,所以代码是问题所在。 这里是:

import mysql.connector

cnx = mysql.connector.connect(
  host="***",
  port='3306',
  user="***",
  password="***",
  database ="***"
)

cursor = cnx.cursor(buffered=True)

query = ("SELECT pic FROM pets ORDER BY RAND() LIMIT 1")

result = cursor.execute(query)
print(result)

cursor.close()
cnx.close()

当我在 IDLE 中运行它时,我得到“无”,没有别的。

是因为我需要以某种方式指定如何显示此类数据(图片)? 在 MySQL 查询的工作台结果只是字节,所以我认为它会像那样显示

我试过将结果转换成某种类型的数据,但得到了这个:

回溯(最近一次通话最后一次):文件“/Users/olina/Desktop/test.py”,第 19 行,在 <module> turnintobyte = bytes(result) TypeError: cannot convert 'NoneType' object to bytes

所以看起来它根本没有从查询中获取任何数据,但我不明白为什么。 请帮助我被卡住了

人们可能期望cursor.execute()会返回某种值,但事实并非如此。

数据可在cursor本身内部获得。

如果您查看文档 ( https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html ) 中的示例,您将看到这个。

没有返回,只有执行,如果有返回那么它就是这样一个iterator

cursor.execute(operation, params=None, multi=False)
iterator = cursor.execute(operation, params=None, multi=True)

这就是为什么result什么都不显示的原因。

要使结果返回某些内容,则需要cursor.fetchone()cursor.fetchall() (如评论之一所建议的那样)或将结果作为迭代器循环(如示例所示)等...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM