2012-02-14 33 views
2

當模塊類不在我的腳本中,而是被其中一個模塊使用(我確實導入了)時,我怎樣捕捉到他的錯誤?python嘗試,除了沒有明確導入的模塊的錯誤

例如:

from sqlite3 import dbapi2 as sqlite 

class sqldb: 

def __init__(self): 
    self.sqlite.connect('records.db') 
    self.c = self.conn.cursor()  

def query(self,query,values) 
try: 
    self.c.execute(query, values) 
    self.conn.commit() 
except sqlite3.OperationalError: 
    print "SQLite DB locked" 

會導致(當數據庫被鎖定):

NameError: global name 'sqlite3' is not defined 

但是,當我不明白的錯誤它給了我正是例外:「sqlite3的.OperationalError'

那麼,我應該如何作爲例外?或者我應該只導入整個sqlite3模塊?如果是的話,這不會增加我的計劃資源足跡嗎?

回答

2

或者我應該只是導入整個sqlite3的模塊?

是的。

如果是的話,這不會增加我的程序的資源佔用量嗎?

否 - 無論如何都導入模塊。你所有的import聲明的作用是將對sqlite3的引用添加到模塊的全局名稱空間中。

6

把下面一行在你的程序的頂部:

import sqlite3 

告訴Python名稱sqlite3與模塊相關聯。

或者,你可以明確地導入錯誤,您正在迎頭趕上:

from sqlite3 import OperationalError 

... 

try: 
    self.c.execute(query, values) 
    self.conn.commit() 
except OperationalError: 
    print "SQLite DB locked" 
相關問題