python mysql select повернути тільки перший рядок таблиці, не все

Я маю справу з проблемою strage і це виглядає так:

цей запит повинен повернути всі мої таблиці:

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

для циклу слід друкувати всі рядки в курсору, але він буде друкувати лише перший. Здається, що курсор заповнений лише першим рядком.

чи є щось що я пропустив тут? Дякую

0

6 Відповіді

Вам потрібно помістити вивід 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
2
додано
ніякої різниці, все одно я отримую перший рядок :(
додано Автор user1229351, джерело

вам потрібен дик і зберегти результат тут

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']
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()
0
додано

Ви можете спробувати "LIMIT" cursor.execute ("select * from mytable limit 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
0
додано
він повертає помилку "для рядка в cursor.execute (" select * from mytable "): TypeError: об'єкт" довгий "не ітерабельний"
додано Автор user1229351, джерело

У мене теж була ця проблема. Моя помилка полягала в тому, що після вставки нового рядка в таблицю я не здійснив результат. Тому ви повинні додати db.commit() після команди INSERT.

0
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;