【发布时间】:2021-03-23 11:52:07
【问题描述】:
我正在尝试使用 Python 的 (3.4) MySQL 模块和以下代码查询本地 MySQL 数据库:
class databases():
def externaldatabase(self):
try:
c = mysql.connector.connect(host="127.0.0.1", user="user",
password="password", database="database")
if c.is_connected():
c.autocommit = True
return(c)
except:
return(None)
d = databases().externaldatabase()
c = d.cursor()
r = c.execute('''select * from tbl_wiki''')
print(r)
> Returns: None
据我所知,连接成功,数据库由几行组成,但查询总是返回无类型。
MySQL执行函数返回None的实例有哪些?
【问题讨论】:
-
c.execute()不会返回任何内容,除非您使用multi=True选项。然后它返回一个迭代器,让您可以在多个查询中逐步执行每个查询的结果。 -
通常你调用游标上的方法来获取查询的结果,例如
c.fetchone()获取一行,c.fetchall()获取所有结果。 -
您使用的是哪个 MySQL 接口?通常,对于 Python DB-API 数据库库,
execute返回None。 (DB-API 规范只是说“返回值未定义”。)execute的重点是修改游标,以便您可以从中提取行,在 Python 中,修改对象的方法通常返回None。某些库在某些情况下确实有返回值execute用于快捷方式或附加功能,但如果您不使用任何这些情况,则不应期望execute有任何意义。 -
@BarryBrian 你确定你在做
c.fetchone(),而不是r.fetchone()?