Tôi muốn bắt và ghi nhật ký MySQL bằng Python. Ví dụ, MySQL đưa ra cảnh báo lỗi chuẩn nếu bạn gửi 'DROP DATABASE IF EXISTS database_of_armaments'
khi không có cơ sở dữ liệu nào tồn tại. Tôi muốn nắm bắt điều này và đăng nhập nó, nhưng ngay cả trong cú pháp try/else thông điệp cảnh báo vẫn xuất hiện.Bẫy cảnh báo MySQL bằng Python
Cú pháp thử/ngoại lệ không phát hiện lỗi MySQL (ví dụ: gửi lỗi đánh máy như 'DRP DATABASE database_of_armaments'
).
Tôi đã thử nghiệm với <<except.MySQLdb.Warning>>
- không có may mắn. Tôi đã xem xét các mô-đun cảnh báo, nhưng không hiểu cách kết hợp nó vào cú pháp try/else.
Để cụ thể, làm thế nào để tôi có được những thứ sau (hoặc thứ gì đó tương tự) hoạt động.
GIVEN: cơ sở dữ liệu 'database_of_armaments' không tồn tại.
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:
Cám ơn ý kiến. Tôi đã thử những điều này và chúng không hoạt động - nhưng tôi đã sử dụng một lớp DatabaseConnection mà tôi đã viết cho một kết nối và phương thức runQuery() của nó để thực thi. Khi tôi tạo một kết nối và con trỏ bên ngoài lớp, ngoại lệ try/except đã bắt gặp lỗi "Lập trình lỗi" và ngoại trừ MySQLdb.ProgrammingError làm việc như được quảng cáo.
Vì vậy, bây giờ tôi phải tìm ra điều gì sai với mã hóa lớp học của mình.
Cảm ơn sự giúp đỡ của bạn.
tôi không tìm thấy bất kỳ câu trả lời ở đây hữu ích, nhưng http://stackoverflow.com/a/2102315/91238 là. – arantius