2017-07-07 80 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

相关问题