Używam mysql.connector do wykonywania operacji SQL. Mam krótkie skrypty, które wykonuje następujące operacje (łańcuchy) na kursor z cursor.execute(...)
:Nieczytelny wynik MySQL z Pythonem
"use {}".format(db)
"show tables"
command = """
ALTER TABLE Object DROP PRIMARY KEY;
ALTER TABLE Object ADD `id` bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
ALTER TABLE Object ADD INDEX (`uid`);"""
W iteracje skryptów w ciągu kilku bazach db
.
Problem polega na tym, że w pewnym momencie pojawia się błąd "Nieprzeczytane znalezione wyniki". Wydaje się, że po uruchomieniu skryptu, w pewnym momencie "use mydb" zwraca wynik (cursor._have_result = True), kiedy nie oczekiwałem jednego. Dziwne jest to, że jeśli ponownie uruchomię pełny skrypt, uruchomi się on nieco dłużej z większą ilością baz danych, dających ten sam błąd później.
Czy możesz zaproponować sposób rozwiązania lub zbadania tego problemu? Czy jest coś, co mogę zrobić, aby zapobiec "nieprzeczytanym wynikom"?
PS: Po ponownym uruchomieniu skryptu polecenia ALTER nie powiodą się dla baz danych, które zostały już wykonane. Nie jestem pewien, czy to powoduje problemy.
Can polecasz ten http://geert.vanderkelen.org/buffering-results-with-mysql-connectorpython/? Nie wiem, czy to z tego samego powodu, dla którego pojawia się błąd "Nieprzeczytane znalezione wyniki". – Angel
Nie jestem pewien, czy ten sam problem, ale stwierdziłem, że wydanie polecenia składającego się z kilku ciężkich długotrwałych zapytań może spowodować problem podobny do twojego. Spróbuj podzielić 'polecenie' w trzech osobnych instrukcjach. – dmg
@DJV: Rozdzieliłem komendy i teraz działało bez błędów. Dzięki! Nie wiem, jak to wyjaśnić. – Gerenuk