2010-11-10 11 views
6

मैं इस कोड मिल गया ..अजगर और MySQLdb - यदि मौजूद ड्रॉप तालिका का उपयोग कर फेंक अपवाद

..... 
try: 
    task_db.cursor.execute('DROP TABLE IF EXISTS `tasks`') 
    print "Affected: %d" % task_db.cursor.rowcount 
except MySQLdb.Error, e: 
    print "Error ocurred: %s " % e.args[0] 
    print e 

तो कार्य तालिका मौजूद नहीं है, तो मैं

create_database.py:11: Warning: Unknown table 'tasks' 
की तरह एक चेतावनी मिलती है लगता है

लेकिन यदि तालिका मौजूद है तो मुझे वह चेतावनी नहीं मिलेगी। विषम?

उत्तर

6

यह बिल्कुल सही व्यवहार है। यदि तालिका मौजूद है, तो यह गिरा दिया गया है। यदि यह अस्तित्व में नहीं है तो आपको चेतावनी अपवाद जो त्रुटि जैसा नहीं है - आप इसे अनदेखा करने के लिए स्वतंत्र हैं और कुछ भी बुरा नहीं होना चाहिए, लेकिन आपको अपनी स्क्रिप्ट को आगे बढ़ने की अनुमति देने के लिए इसे पकड़ना होगा।

संपादित करें:

, खलबली मचाने वाले से चेतावनी को रोकने के किसी भी अन्य अपवाद के रूप में इसे पकड़ करने के लिए:

try: 
    [some code] 
except MySQLdb.Warning: 
    [exception handling code] 
+0

सू ... क्या उत्पादन में प्रदर्शित होने से रोकने के लिए एक तरीका है? – Wizzard

+0

मैंने अपना उत्तर –

+5

संपादित किया MySQLdb को पकड़ना। चेतावनी ने मेरे लिए कुछ भी नहीं किया। वैकल्पिक फिक्स के लिए [thomdask का उत्तर] (http://stackoverflow.com/a/4830497/307705) देखें। –

22

MySQLdb.Warning पकड़ने मेरे लिए काम नहीं किया है, इसलिए मैं करने के लिए एक और रास्ता मिल गया दमन चेतावनी:

import warnings 
warnings.filterwarnings("ignore", "Unknown table.*") 

और आप जो भी आप दबाना चाहते हैं उसके साथ दूसरे पैरामीटर को संपादित कर सकते हैं।

11

सबसे खूबसूरत तरीका Mysql चेतावनी से बचने के लिए:

from warnings import filterwarnings 
import MySQLdb 

filterwarnings('ignore', category = MySQLdb.Warning) 
+3

यह वास्तव में थॉमडस्क उत्तर से अधिक सुरुचिपूर्ण है, लेकिन क्या यह अन्य चेतावनियों को भी प्रभावित नहीं करेगा जिन्हें हम अनदेखा नहीं करना चाहते हैं? –

+0

@Roman, मुझे लगता है कि यह एक है महत्वपूर्ण बिंदु इसलिए मैं यह नहीं कहूंगा कि यह समाधान अधिक सुरुचिपूर्ण है। यह एक अलग चेतावनी को दबाकर सभी चेतावनियों को दबाकर बस अलग है। – chishaku

संबंधित मुद्दे