使用mysql-connector-python从mysql中选择数据

时间:2015-02-09 13:43:56

标签: python mysql

我有一个我通过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命令并得到一些东西?

2 个答案:

答案 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