2017-07-07 107 views
0

導入模塊時,我有以下的測試代碼:「NameError:名字[模塊]沒有定義」,在

import sqlite3 

class database: 
    def __init__(self, name): 
     self.name = name 

    def connect(name): 
     db = sqlite3.connect("%s.db" % self.name) 
     c = db.cursor() 

    def test(self): 
     print (3) 

如果我跑database('name').test(),我得到3,這樣的作品。但是,如果我嘗試database('name').connect(),我會得到「NameError:名稱'sqlite3'未定義」

類對我來說是比較新的,我仍在試圖弄清楚它們是如何工作的。非常感謝您的幫助。

編輯:請參閱答案中的意見解決方案。問題似乎是我在文件和筆記本中都導入了sqlite3。解決方案是僅在文件中導入模塊。

+1

這並不說明你的錯誤,但我認爲應該是:'DB = sqlite3.connect( 「%s.db」 %self.name )' – Johannes

+0

你說得對,謝謝指出 – snapcrack

+1

而你在'connect'方法中缺少'self'參數。應該是:'def connect(self,name):'。 – Johannes

回答

2

您可以某處有一個錯字在你的描述,因爲我覺得你首先會得到另一個錯誤做

data = database() 
data.test() 
data.connect('name') 

時,您需要將self添加到連接高清,使其正確的類方法。連接呼叫中還有一個錯字。下面應該工作

import sqlite3 

class database: 
    def __init__(self, name): 
     self.name = name 

    def connect(self): 
     db = sqlite3.connect("%s.db" % self.name) 
     c = db.cursor() 

    def test(self): 
     print(3) 

那麼就

data = database('test') 
data.connect() 
+0

你是對的,我在描述中有一個錯字,這在我當中是sl;不馴的;爲此道歉。但我*仍然*逐字地使用該代碼時得到這個相同的錯誤(除了用我的db的名字替換'test')。它一直告訴我,它不承認名稱sqlite3。 – snapcrack

+0

你確定你已經在當前的python會話中導入了它? – Sebastian

+0

導入到創建類的文件以及jupyter筆記本中,我正在運行該類。這就是爲什麼它非常令人沮喪:( – snapcrack

相關問題