我有一个我通过MAMP管理的mysql数据库(使用端口3306,服务器在端口80上)。我已从Oracle下载并安装了mysql-connector-python库,并尝试访问和操作数据库。奇怪的是,按照http://dev.mysql.com/doc/connector-python/en/connector-python-tutorial-cursorbuffered.html的教程,我能够运行查询以将新记录插入到特定的表中(只要我在连接器上发出.commit()方法)。
但是,我似乎无法使用简单的select命令检索任何数据。所以查询,"选择*来自Assignments
"返回无。
query = ('''SELECT title,description FROM `Assignments` LIMIT 0 , 30''')
cursor = cnx.cursor()
result = cursor.execute(query)
print "result:",result
#All assignment info
for (title, description) in results:
print title, description
我一直收到错误," TypeError:' NoneType'对象不可迭代"。我相信这与执行查询的结果为None的事实有关。 B / c我能够提交更新并将更改插入数据库,我知道我连接得很好。为什么我不能运行简单的SELECT命令并得到一些东西?
答案 0 :(得分:2)
您应该使用MySQLCursor.fetchall
方法来获得结果。
cursor.execute(query)
rows = cursor.fetchall()
或
cursor.execute(query)
head_rows = cursor.fetchmany(size=2)
remaining_rows = cursor.fetchall()
答案 1 :(得分:1)
您不需要调用 fetchall ,如果您查看文档,您将看到没有赋值给execute调用的返回值,因为该方法返回无,您只需执行然后遍历MySQLCursor/cursor对象:
query = ('''SELECT title,description FROM `Assignments` LIMIT 0 , 30''')
cursor = cnx.cursor()
# forget assigning, just execute
cursor.execute(query)
# iterate over the cursor
for (title, description) in cursor:
print title, description