前提是要安装好Python以及eclipse和MySQL的相应版本。本文Python为2.7,MySQL为5.1Eclipse为3.6.2
下载完MySQLdb以后,直接安装即可。在eclipse中启用它的时候要注意遇到问题可参看如下:
文章来源http://www.chengxuyuans.com/Python/32723.html
pydev是一个很好的开发工具,总有一个问题让我很头痛,使用第三方库的时候,总是会提示
Unresolved import,以 import MySQLdb为例,在python命令行输入:import MySQLdb 确认了安装成功后,使用pydev 还是会报Unresolved import。
就需要给PyDev添加支持:
打开:windows->Preferences->PyDev->Interpreter - Python
在Forced Builtins下面手工添加 MySQLdb 字段 强制编译。
Apply之后,可以看到 Libraries 下面添加了 MySQLdb的目录。如果没有,则手工在Libraries 下面添加MySQLdb的目录,再次强制编译即可。
但在装wxPython2.9-win32-py27 时, import wx 使用了上述方法后仍报错,原因是在安装wx2.9时,目录为Python27\Lib\site-packages\*wxPython2.9-msi*\wx; 只要把wx越过他的上级目录,直接放在site-packages下就可以解决问题了。
原来ubuntu 12.04 python-mysqldb只需要import MySQLdb就可以使用MySQLdb.cursors.DictCursor(字典游标) 不过最近不知道python的原因还是mysqldb的原因,应该是python-mysqldb版本问题吧, Traceback (most recent call last): File "", line 22, in AttributeError: 'module' object has no attribute 'cursors' MySQLdb.cursors 分离出去了,需要单独import。 针对旧代码解决方案, 一、 行首 import MySQLdb.cursors.DictCursor 二、 1. zhipeng@ubuntu:~$ python -c "import MySQLdb as mysqldb; print mysqldb.__file__" /usr/lib/python2.7/dist-packages/MySQLdb/__init__.py 2. sudo su 3. echo "import cursors" >> /usr/lib/python2.7/dist-packages/MySQLdb/__init__.py 4. zhipeng@ubuntu:~$ python -c "import MySQLdb as mysqldb; print mysqldb.cursors" DictCursor的这个功能是继承于CursorDictRowsMixIn,这个MixIn提供了3个额外的方法: fetchoneDict、fetchmanyDict、fetchallDict。 在默认情况下cursor方法返回的是BaseCursor类型对象,BaseCursor类型对象在执行查询后每条记录的结果以列表(list)表示。如果要返回字典(dict)表示的记录,就要设置cursorclass参数为MySQLdb.cursors.DictCursor类。 cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) 这个参数也可在调用connect方法建立连接时设置,如下: >>> conn = MySQLdb.connect(host='192.168.1.103', port=3306, user='testacc', pass wd='test1234', db='1dcq', cursorclass=MySQLdb.cursors.DictCursor) >>>conn.close() 例子: >>> import MySQLdb >>> conn = MySQLdb.connect(host='192.168.1.103', port=3306, user='testacc', passwd='test1234', db='1dcq') >>> cursor = conn.cursor() >>> cursor.execute('SELECT * FROM pagesobject LIMIT 0, 1') 1L >>> cursor.fetchone() (1L, 0L, '???', 'true', None, 0) >>> cursor.close() 对比实验如下: >>> cursor = conn.cursor(MySQLdb.cursors.DictCursor) >>> cursor.execute('SELECT * FROM pagesobject LIMIT 0, 1') 1L >>> cursor.fetchone() # 等价fetchoneDict() {'PageDesc': None, 'P_Id': 0L, 'isParent': 0, 'Html_open': 'true', 'PageName': '???', 'Id': 1L} >>> cursor.close() >>>conn.close()