我有一个奇怪的问题,这可能很容易解决。
我有一个类数据库,其中包含一个__init__
和一个executeDictMore
方法(等等)。
class Database():
def __init__(self, database, server,login, password ):
self.database = database
my_conv = { FIELD_TYPE.LONG: int }
self.conn = MySQLdb.Connection(user=login, passwd=password, db=self.database, host=server, conv=my_conv)
self.cursor = self.conn.cursor()
def executeDictMore(self, query):
self.cursor.execute(query)
data = self.cursor.fetchall()
if data == None :
return None
result = []
for d in data:
desc = self.cursor.description
dict = {}
for (name, value) in zip(desc, d) :
dict[name[0]] = value
result.append(dict)
return result
然后我在文件 db_functions.py 中实例化这个类:
from Database import Database
db = Database()
我从 db_functions 的函数调用 executeDictMore 方法:
def test(id):
query = "SELECT * FROM table WHERE table_id=%s;" %(id)
return db.executeDictMore(query)
现在是奇怪的部分。如果我导入 db_functions 并从 python 控制台调用 db_functions.test(id) :
import db_functions
t = db_functions.test(12)
它工作得很好。但是,如果我从另一个 python 文件做同样的事情,我会收到以下错误:
AttributeError: Database instance has no attribute 'executeDictMore'
我真的不明白这里发生了什么。我不认为我有另一个数据库类干扰。我在 sys.path 中附加了模块所在的文件夹,因此无论如何它都应该调用正确的模块。
如果有人有想法,非常欢迎。