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 ="john@abc.com"
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 :(得分:0)
您在类文件中定义或导入MySQLdb的位置是什么?粗略的逻辑似乎很好,我只是看不到你在db.py文件中定义或导入MySQLdb的位置。
看起来您正在尝试使用未在类文件范围内定义的符号MySQLdb。
答案 1 :(得分:0)