mysql pydev_pydev-python 链接mysql数据库(mac系统)-阿里云开发者社区

在mac os上安装MySQLdb,遇到了很多问题,总结一下:

首先,如果用sudo easy_install mysql-python命令安装,基本上不会成功的,原因有两个:一是找不到mysql_config位置,二是现在基本上安装的是64位的系统和64位的python,和默认的32位安装包冲突。

解压后,修改site.cfg,其中注释了一行:

mysql_config = /usr/local/mysql/bin/mysql_config

把注释去掉,路径改为你安装的mysql对应的位置。

然后命令行进入解压的MySQL-python-1.2.4b4目录,执行sudo python setup.py install进行安装。

安装过程中又遇到很多问题,然后在网上找到了两个解决方案。但是这样安装还是会有问题,因为我使用eclipse+pydev的开发环境,这个环境还是不能使用MySQLdb。但是用这两个解决方法,可以在命令行下 import MySQLdb了,所以也记下来看看将来有没更完美的解决方法。

第一个问题是安装过程提示:Library not loaded: libmysqlclient.18.dylib

根据http://blog.sina.com.cn/s/blog_68f3bc280100supn.html,要么在环境变量添加export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/" 要么就软链接,在命令行里执行:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

第二个问题是安装过程提示:no suitable image found.Did find:/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so: mach-o, but wrong architecture

在/Users/你的用户名/ 目录下编辑或添加隐藏文件.bash_profile,添加环境变量:

PATH="/usr/local/mysql/bin:${PATH}"

export PATH

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

export VERSIONER_PYTHON_PREFER_64_BIT=yes

export VERSIONER_PYTHON_PREFER_32_BIT=yes

然后再在命令行进入解压的MySQL-python-1.2.4b4目录,输入:

sudo python setup.py build

sudo python setup.py install

重新编译和执行安装。

这样以后在命令行下执行import MySQLdb就没有问题

2.pydev中的配置

前提是完成了上面的步骤

首先要打开preference-pydev-interpreter-python中,点击autoconfig勾选上有mysql的那个包,重新导入。

这时候添加importMySQLdb虽然不报错,但是一旦运行,就会报错:

Library not loaded: libmysqlclient.18.dylib   Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so

解决方案是在shell里执行(注意改路径):

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib  /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so

3.测试

在shell里输入以下代码测试下是否链接成功

import MySQLdb

try:

conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)

cur=conn.cursor()

cur.execute('select * from mytable')

results=cur.fetchall()

for r in results:

print r

cur.close()

conn.close()

except MySQLdb.Error,e:

print "Mysql Error %d: %s" % (e.args[0], e.args[1])

输出结果,数据库查询成功:

1f6c1113a21d30b2c74b9f84f0de1587.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值