python mysql select只返回第一行表,不是全部

时间:2013-06-26 16:36:16

标签: python mysql

即时处理存储问题,这就是:

此查询应该返回我的所有表:

db = MySQLdb.connect(host="localhost", port=3306, user="A", passwd="B", db="X")
cursor = db.cursor()
cursor.execute("select * from mytable")
cursor.fetchall()
for row in cursor:
print row

for循环应该打印光标中的所有行,但它只打印第一行。 似乎光标只有第一行填充。

我在这里错过了什么吗? 感谢

7 个答案:

答案 0 :(得分:3)

您需要将cursor.fetchall()的输出放入变量中。像

db = MySQLdb.connect(host="localhost", port=3306, user="A", passwd="B", db="X")
cursor = db.cursor()
cursor.execute("select * from mytable")
rows = cursor.fetchall()
for row in rows:
    print row

答案 1 :(得分:0)

尝试

db = MySQLdb.connect(host="localhost", port=3306, user="A", passwd="B", db="X")
cursor = db.cursor()
for row in cursor.execute("select * from mytable"):
    print row

答案 2 :(得分:0)

你需要一个dic并将结果保存在这里

dic={}
cursor.execute("select * from table")
dic['table']=cursor.fetchall()
for row in range(len(dic['table'])):
    print dic['table'][row]

如果您需要打印任何列

print dic['table'][row]['colum']

答案 3 :(得分:0)

这不是使用.fetchall()方法的正确方法。使用cursor.stored_results(),然后对结果执行fetchall()以执行此任务,如下所示:

db = MySQLdb.connect(host="localhost", port=3306, user="A", passwd="B", db="X")
cursor = db.cursor()
cursor.execute("select * from mytable")
results = cursor.stored_results()
for result in results:
    print result.fetchall()

答案 4 :(得分:0)

你可以试试“LIMIT” cursor.execute(“select * from mytable limit 1”)

答案 5 :(得分:0)

我也有这个问题。我的错误是在表中插入新行后我没有提交结果。所以你应该在INSERT命令之后添加db.commit()。

答案 6 :(得分:0)

我知道这已经很久了,但我没有在其他任何地方找到这个答案,我认为它可能会有所帮助。

cursor.execute("SELECT top 1 * FROM my_table")