带有MySQLdb的python2.6,未定义NameError'MySQLdb'

时间:2011-04-10 02:12:22

标签: python mysql programming-languages network-programming

来自翻译的

我可以发出>>>从MySQLdb就好了。所以,我假设模块确实加载了。我的来源如下:

  

来自Tkinter import *
  来自MySQLdb import *
  “”“
  负担得起的拖车库存控制

     

功能:
  connection() - 控制数据库连接
  delete() - 从数据库中删除项目
  edit() - 在数据库中编辑项目的属性
  lookup() - 查找项目
  new() - 向数据库添加新项目
  receive() - 增加数据库中项目的数量
  remove() - 减少数据库中项目的数量
  report() - 显示库存活动
  transfer() - 从一个位置删除项目,在另一个位置接收项目

     

“”“
  def control():
  .... dbInfo = {'username':'livetaor_atowtw','password':'spam',\
  ....'server':'eggs.com','base':'livetaor_towing','table':'inventory'}
  .... def testConnection():
  ........ sql = MySQLdb.connect(user = dbInfo [username],passwd = dbInfo [password],\
  ........ host = dbInfo [server],db = dbInfo [base])
  ........ MySQLdb.mysql_info(sql)

     

.... testConnection()

     

control()

这给了我:

  

brad @ brads-debian:〜/ python / towing / inventory $ python inventory.py
  追溯(最近的呼叫最后):
  ..文件“inventory.py”,第53行,在   ....控制()
  ..文件“inventory.py”,第26行,在控制中   .... testConnection()
  ..文件“inventory.py”,第22行,在testConnection中   .... sql = MySQLdb.connect(user = dbInfo [username],passwd = dbInfo [password],\
  NameError:全局名称'MySQLdb'未定义

1)我哪里出错?
2)你们看到的其他任何问题? 3)关于如何检查与数据库的有效连接的任何建议(不仅仅是服务器)?

2 个答案:

答案 0 :(得分:2)

这是由于您导入模块然后引用它的方式。

变化:

from MySQLdb import *

import MySQLdb

如果你计划引用它的时尚。

无论如何,这些语句和函数的工作原理如下:

来自:http://effbot.org/zone/import-confusion.htm

import X导入模块X,并在当前命名空间中创建对该模块的引用。或者换句话说,在运行此语句之后,可以使用X.name来引用模块X中定义的内容。

来自X import *的

导入模块X,并在当前命名空间中为该模块定义的所有公共对象创建引用(即,所有没有以“_”开头的名称的公共对象)。或者换句话说,在运行此语句之后,您可以简单地使用普通名称来引用模块X中定义的内容。但是X本身未定义,因此X.name不起作用。如果已经定义了名称,则它将被新版本替换。如果X中的名称更改为指向其他某个对象,则模块将不会注意到。

从X import a,b,c导入模块X,并在当前命名空间中为给定对象创建引用。或者换句话说,您现在可以在程序中使用a和b和c。

答案 1 :(得分:1)

from MySQLdb import *import MySQLdb执行非常不同的事情。