即时处理存储问题,这就是:
此查询应该返回我的所有表:
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循环应该打印光标中的所有行,但它只打印第一行。 似乎光标只有第一行填充。
我在这里错过了什么吗? 感谢
答案 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")