Почему я не могу получить SQL-операторы в Python?

0

У меня очень большая таблица (374870 строк), и когда я запускаю следующие временные метки кода, они заканчиваются тем, что они длиннее int со значением 374870.... Я хочу иметь возможность захватить все временные метки в таблице... но все, что я получаю, это long int: S

import MySQLdb

db = MySQLdb.connect(
                host    = "Some Host",
                user    = "SOME USER",
                passwd  = "SOME PASS",
                db      = "SOME DB",
                port    = 3306

        )

sql = "SELECT `timestamp` from `table`"

timestamps = db.cursor().execute(sql)
Теги:

3 ответа

2
Лучший ответ

Попробуйте следующее:

cur = db.cursor()
cur.execute(sql)
timestamps = []
for rec in cur:
    timestamps.append(rec[0])
  • 0
    Это решение работает, спасибо eumiro. все еще немного раздражен, что fetchall () не работает.
  • 0
    Вы можете изменить мою четвертую строку на for rec in cur.fetchall(): и это тоже будет работать
Показать ещё 1 комментарий
1

Вам нужно вызвать fetchmany() на курсор для извлечения нескольких строк или вызвать fetchone() в цикле, пока он не вернет None.

  • 0
    проблема в том, что временные метки заканчиваются как длинные int ... Может быть, из-за большого размера моей таблицы. поэтому fetchone () fetchmany () или fetchall () не будут работать для отметок времени, потому что длинный объект int не имеет этих функций ...
  • 0
    @Richard, 374870 не очень большой стол. Попробуйте мой ответ, и вы увидите, что timestamps списка могут вместить ваши данные. Если вы скажете мне, как это выглядит сейчас, мы можем попытаться преобразовать его в любой формат, который вам нужен.
Показать ещё 1 комментарий
0

Учитывайте возможность того, что нечетное целое число, которое вы получаете, - это количество строк в результатах запроса.

Рассмотрим чтение документов (PEP 249)... (1) возвращаемое значение из cursor.execute() не определено; то, что вы видите, особенно для вашей базы данных, и для удобства переноски не следует полагаться. (2) вам нужно сделать results = cursor.fetch{one|many|all}() или перебрать курсор... for row in cursor: do_something(row)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню