我想创建自己的模块以返回Mysql游标,但是我的模块依赖于import mysql.connector
和from mysql.connector import Error
。
我该如何解决?与__init__.py
文件的目录位置有关吗?我得到NameError: name 'mysql' is not defined
。
from mysql import connector
from mysql.connector import Error
class SqlCnt:
def __init__(self, db):
"""Constructor for this class."""
self.db = db
@classmethod
def get_input(self):
db = input("Enter the database:")
try:
cnx = mysql.connector.connect(
host="localhost",
database=''+db,
port=******,
user="root",
password="*******",
raise_on_warnings=True,
use_pure=False,
autocommit=True
)
print("Connection made,cursor object returned")
cursor = cnx.cursor(prepared=True)
return cursor
except mysql.connector.Error as error:
print("Failed to connect {}".format(error))
答案 0 :(得分:0)
当您使用from
时,它将单独使用该对象。也就是说,执行此行之后:
from mysql.connector import Error
您无需使用此行中的mysql.connector
:
except mysql.connector.Error as error:
相反,正确的方法是仅使用对象的名称,如下所示:
except Error as error:
答案 1 :(得分:0)
让我解释一下您犯了什么错误以及解决方法。
您从connector
导入了mysql
,从Error
导入了mysql.connector
,所以您只有connector
和Error
。您无法像在mysql
中那样使用except mysql.connector.Error as error
,因为从未导入过mysql
。
因此可以使用import mysql
解决此问题。
就像在子目录中访问目录一样,您无法在父目录上执行操作。