从Python中的数据库加载数据
我是python新手,正在尝试从数据库加载数据。代码运行时没有错误,但没有输出任何内容,即使我要求它在3个位置打印(作为检查它是否工作)。 这可能很简单,但我看不出问题所在——我非常感谢任何指点。谢谢 以下是代码(缩进正确,但该站点忽略了它):从Python中的数据库加载数据,python,database,adodb,Python,Database,Adodb,我是python新手,正在尝试从数据库加载数据。代码运行时没有错误,但没有输出任何内容,即使我要求它在3个位置打印(作为检查它是否工作)。 这可能很简单,但我看不出问题所在——我非常感谢任何指点。谢谢 以下是代码(缩进正确,但该站点忽略了它): 你是怎么运作的?也许您应该尝试在末尾(类外部和根缩进处)定义一个main 您的第二个和第三个print语句看起来不错,这似乎表明您的代码没有到达它们。问题出在\uuuu init\uuuu()方法中。这里有一个解决方案: class LoadData:
你是怎么运作的?也许您应该尝试在末尾(类外部和根缩进处)定义一个main
您的第二个和第三个print语句看起来不错,这似乎表明您的代码没有到达它们。问题出在
\uuuu init\uuuu()方法中。这里有一个解决方案:
class LoadData:
db = None
def __init__(self):
self.db='330_26112015.mdb'
print self.db
[self.EventCode, self.Easting, self.Northing] = self.import_db(self.db)
您的版本存在以下问题:
本地变量和实例变量之间的混淆(打印db
而不是self.db
),以及本地命名空间中的函数与实例方法之间的混淆(调用import\u db()
而不是self.import\u db()
)
关于self
及其使用的混淆。实例方法(如您的import\u db()
)自动将实例作为第一个参数获取,因此您不必传入它。事实上,调用self.import\u db(self,self.db)
应该会给您一个错误,告诉您import\u db
在需要两个参数时得到了三个参数(因为实例会自动添加到参数列表的开头)
字符串和列表。变量self.db
是一个字符串,因此引用self.db[0]
是字符串“3”
,而不是数据库文件的名称(我认为这是您想要的)
正在初始化为空字符串。这比铁壳更具风格,但最好使用None
而不是空字符串来表示尚未分配变量;它更容易测试,也不容易出错
谢谢:)我对代码进行了编辑,以便它能够到达第二个函数-这是“self”的问题。现在来看真正的问题:我已经尝试了许多连接MS Access数据库(.mdb)的方法&遇到错误,现在我正在尝试pyodbc:cnxn=pyodbc.connect('DRIVER={SQL Server};Server=localhost;PORT=1433;DATABASE='+file+';UID=;PWD='))这与许多教程中描述的相同,但显示错误:SQL Server不存在或拒绝访问。以前有人见过吗?可能是防火墙问题。显而易见,服务器可能未启动,或者对运行代码的IDE不可见
def main():
obj = LoadData()
obj.import_db('somefile')
class LoadData:
db = None
def __init__(self):
self.db='330_26112015.mdb'
print self.db
[self.EventCode, self.Easting, self.Northing] = self.import_db(self.db)