Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) При повторном запросе к mysql возвращаются старые данные / 5 сообщений из 5, страница 1 из 1
04.08.2016, 22:46
    #39286694
ErshKUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) При повторном запросе к mysql возвращаются старые данные
Приветствую!

* попытался поискать в гугле, решив что стандартная проблема, но подаются или простые инструкции где нет этого, или не то

вот простой код
Код: python
1.
2.
3.
db = MySQLdb.connect(host="localhost", user="user", passwd="pass", db="base", charset='utf8')
cursor = db.cursor()
cursor.execute(""" SELECT id FROM events """)


получаю ответ 3L, т.е. 3 строки найдено. Добавляю через myphpadmin еще строку, вызываю
Код: python
1.
cursor.execute(""" SELECT id FROM events """)


получаю опять 3L
пробовал заново cursor создавать - безрезультатно. Помогает только переконнект к базе. Но хотелось бы делать это в одном коннекте, т.к. скрипт будет регулярно обращаться к базе работая по циклу.

python 2.7. Хелп Pro-питоноводы...
...
Рейтинг: 0 / 0
05.08.2016, 06:22
    #39286841
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) При повторном запросе к mysql возвращаются старые данные
А с чего вы взяли, что cursor.execute возвращает количество строк?
В стандарте это не определено
автор.execute ( operation [, parameters ])
Prepare and execute a database operation (query or command).

Parameters may be provided as sequence or mapping and will be bound to variables in the operation. Variables are specified in a database-specific notation (see the module's paramstyle attribute for details). [5]

A reference to the operation will be retained by the cursor. If the same operation object is passed in again, then the cursor can optimize its behavior. This is most effective for algorithms where the same operation is used, but different parameters are bound to it (many times).

For maximum efficiency when reusing an operation, it is best to use the .setinputsizes() method to specify the parameter types and sizes ahead of time. It is legal for a parameter to not match the predefined information; the implementation should compensate, possibly with a loss of efficiency.

The parameters may also be specified as list of tuples to e.g. insert multiple rows in a single operation, but this kind of usage is deprecated: .executemany() should be used instead.

Return values are not defined



делайте fetchall и получите ваши записи
...
Рейтинг: 0 / 0
05.08.2016, 20:01
    #39287539
ErshKUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) При повторном запросе к mysql возвращаются старые данные
FishHookА с чего вы взяли, что cursor.execute возвращает количество строк?
В стандарте это не определено
автор.execute ( operation [, parameters ])
Prepare and execute a database operation (query or command).

Parameters may be provided as sequence or mapping and will be bound to variables in the operation. Variables are specified in a database-specific notation (see the module's paramstyle attribute for details). [5]

A reference to the operation will be retained by the cursor. If the same operation object is passed in again, then the cursor can optimize its behavior. This is most effective for algorithms where the same operation is used, but different parameters are bound to it (many times).

For maximum efficiency when reusing an operation, it is best to use the .setinputsizes() method to specify the parameter types and sizes ahead of time. It is legal for a parameter to not match the predefined information; the implementation should compensate, possibly with a loss of efficiency.

The parameters may also be specified as list of tuples to e.g. insert multiple rows in a single operation, but this kind of usage is deprecated: .executemany() should be used instead.

Return values are not defined



делайте fetchall и получите ваши записи

да делал я fetchall, там то же.

пока помогает
Код: python
1.
db.commit()


после него уже при выборке будут новые данные
...
Рейтинг: 0 / 0
05.08.2016, 20:03
    #39287540
ErshKUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) При повторном запросе к mysql возвращаются старые данные
тут
Код: python
1.
cursor.execute(""" SELECT id FROM events """)
...
Рейтинг: 0 / 0
09.08.2016, 10:12
    #39288729
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Python) При повторном запросе к mysql возвращаются старые данные
ErshKUSdb.commit()

после него уже при выборке будут новые данные

После него новые данные будут в базе, а не только в выборке. Этим подаётся SQL команда COMMIT, означающая, что изменения, сделанные в базе, должны быть сохранены. Без неё они пропадут. Напротив, SQL команда ROLLBACK отменяет изменения, сделанные после последнего COMMIT (нужно при возникновении ошибки в процессе изменения), ей соответствует db.rollback() . Вместо того, чтобы каждый раз делать db.commit(), можно задать db.autocommit (True).
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Python) При повторном запросе к mysql возвращаются старые данные / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]