2016-03-01 72 views
0

代码NameError:全局名称 'MySQLdb的' 没有定义db.py

class n2b_db: 
    ''' database function class ''' 

    database=connectiox=cursor=server=None 

def __init__(self,server,database): 
    self.database = database 
    self.server  = server 

@classmethod 
def connect(cls,self): 
    self.connectiox = MySQLdb.connect(host=self.server,user="root", passwd="samsam",db=self.database) 
    self.cursor  = self.connectiox.cursor() 
    print("connection successful") 

@classmethod  
def disconnect(cls,self): 
    self.connectiox.close 
    print("connection closed") 

@classmethod 
def query(cls,self, sqlstatement, params): 
    if (params is not None): 
     rtnvalue = self.cursor.execute(sqlstatement, (params,)) 
    else: 
     rtnvalue = self.cursor.execute(sqlstatement) 

    try: 
     self.connectiox.commit() 
     print("transaction committed") 
     return rtnvalue 
    except: 
     self.connectiox.rollback() 
     print("transaction rolled back") 
     return None 

这是示例代码重现我得到

import MySQLdb 
from passlib.hash import sha256_crypt 
from db import * 
import gc 

username ="John" 
email  ="[email protected]" 
password =sha256_crypt.encrypt((str("john01"))) 

x = n2b_db("localhost","pythondb") 
x.connect() 
n = x.query("""Select * from users where username=%s""",username) 

if int(n)>0: 
    print("That username is already taken, please choose another") 
else: 
    Print("trying to write to sql") 
    n = x.query("""Insert into users(username,password,email,tracking) values (%s,%s,%s,%s)""",username,password,email,"Test tracking") 
    Print("Thanks for registering") 
    gc.collect() 

当我运行错误这段代码我得到如下错误,不知道为什么我得到这个错误。

>>> x.connect() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/var/www/FlaskApp/FlaskApp/classes/db.py", line 12, in connect 
    self.connectiox = MySQLdb.connect(host=self.server,user="root", passwd="samsam",db=self.database) 
NameError: global name 'MySQLdb' is not defined 

回答

0

您需要在db.py,而不是示例代码导入MySQLdb,否则db.py解释无法理解什么是MySQLdb

您可以检查Python modules了解更多详情。

希望它有帮助。

0

你在哪里定义或导入类文件的MySQLdb?逻辑看起来很好,我只是看不到在db.py文件中定义或导入MySQLdb的位置。

它看起来像你正在尝试使用未在类文件范围内定义的符号MySQLdb。

+0

是的,你是正确的..我没有在db.py文件中定义MySQLdb – Yajnas

相关问题