Я пытаюсь запустить некоторые запросы, которые должны создавать временные таблицы, а затем возвращает набор результатов, но я не могу сделать это с MySQLdb api.Python MySQLdb не дождался результата
Я уже копаю что-то об этой проблеме, например here но без успеха.
Мой запрос выглядит так:
create temporary table tmp1
select * from table1;
alter tmp1 add index(somefield);
create temporary table tmp2
select * from table2;
select * from tmp1 inner join tmp2 using(somefield);
Это возвращает немедленно пустой результирующий набор. Если я перейду к клиенту mysql и сделаю show full processlist
, я смогу увидеть мои запросы. Им требуется несколько минут. Почему курсор возвращается немедленно и не дожидается запроса для запуска.
Если я пытаюсь запустить другой запрос у меня есть «Команда из синхронизации, вы не можете запустить эту команду сейчас»
я уже пытался поставить свою связь с AUTOCOMMIT к Истинному
db = MySQLdb.connect(host='ip',
user='root',
passwd='pass',
db='mydb',
use_unicode=True
)
db.autocommit(True)
Или положите каждый оператор в свой собственный cursor.execute()
и между ними db.commit()
, но без успеха тоже.
Помогите мне понять, в чем проблема? Я знаю, что mysql не поддерживает транзакции для некоторых операций, таких как alter table, но почему api не ждет, пока все закончится так же, как с select
?
Кстати, я пытаюсь сделать это на ноутбуке ipython.
Конец должен выполняться с помощью dbhandle, а не курсора .. db.commit() в коде выше. Это то, что вы пробовали? – erobbins
Да, это опечатка. Когда я делаю 'db.commit()', я получаю ошибку синхронизации. – balsagoth