Chciałbym złapać i zalogować ostrzeżenia MySQL w Pythonie. Na przykład, MySQL wyświetla ostrzeżenie o błędzie standardowym, jeśli podasz 'DROP DATABASE IF EXISTS database_of_armaments'
, gdy taka baza danych nie istnieje. Chciałbym to przechwycić i zalogować, ale nawet w składni try/else pojawia się komunikat ostrzegawczy.Trapping MySQL Ostrzeżenia W Pythonie
Składnia try/except zachowuje błędy MySQL (np. Podanie literówki, takiej jak 'DRP DATABASE database_of_armaments'
).
Eksperymentowałem z <<except.MySQLdb.Warning>>
- bez powodzenia. Przyjrzałem się modułowi ostrzeżeń, ale nie rozumiem, jak włączyć go do składni try/else.
Aby być konkretnym, jak uzyskać następujące (lub coś w tym stylu) do pracy.
PODANE: baza danych "database_of_armaments" nie istnieje.
try:
cursor.execute('DROP DATABASE IF EXISTS database_of_armaments')
except: <<WHAT DO I PUT HERE?>>
print 'There was a MySQL warning.'
<<AND what goes here if I want to get and manipulate information about the warning?>>
UPDATE:
Dzięki za komentarze. Próbowałem tych i nie działały - ale używałem klasy DatabaseConnection, którą napisałem dla połączenia, i jego metody runQuery() do wykonania. Kiedy utworzyłem połączenie i kursor poza klasą, próba/except Wyjątek przechwycił "Błąd programowania", a oprócz tego MySQLdb.ProgrammingError działał tak jak w reklamie.
Teraz muszę się dowiedzieć, co jest nie tak z moim kodowaniem klasy.
Dziękuję za pomoc.
nie znaleźliśmy żadnych z odpowiedzi tutaj przydatne, ale http://stackoverflow.com/a/2102315/91238 było. – arantius