文档章节

MySQLdb安装

艳沐石
 艳沐石
发布于 2014/11/19 15:14
字数 953
阅读 26
收藏 0

最近,朋友们常提起python。既然大家都觉得它好,而且之前我在linux下安装google的goagent代理的时候,出现过python的错误,我也自己想学习一下,理解一下它是如何处理解决问题的。python的环境,在linux下是安装好的。那么,为了能让python操作数据库,我按照网上的方法安装MySQLdb。

背景描述

服务器:centos 6.3
数据库:mysql 5.6采用rpm方式安装
    MySQL-client-5.6.16-1.el6.x86_64.rpm
    MySQL-server-5.6.16-1.el6.x86_64.rpm

软件准备

下载软件:
wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

软件安装

  将文件解压后,在README文件中,有linux下安装步骤,如下
$ tar xfz MySQL-python-1.2.3.tar.gz
  $ cd MySQL-python-1.2.3
  $ # edit site.cfg if necessary
  $ python setup.py build
  $ sudo python setup.py install # or su first


问题解决

按照官方给的步骤,进行安装,出现了几个问题。

1. ImportError: No module named setuptools
解决方法:yum install python-setuptools

2. EnvironmentError: mysql_config not found
解决方法:需要安装MySQL-devel-5.6.16-1.el6.x86_64.rpm
(注:查看当前安装的mysql信息,或者find / -name mysql_config,查看是否存在对应命令。没有需要安装对应的mysql-devel。)

3.  /usr/bin/ld: cannot find -lmysqlclient_r
解决方法:mysql-python的目录下site.cfg 的 threadsafe = True 改为 False。就可以安装,的确如此。再看看 mysql 源码里的 ./configure –help 就知道有个 –enable-thread-safe-client 选项,如果安装的时候指定就可以了(就还是用 threadsfe = True)。
当调整为threadsafe的方法时候,知识将lmysqlclient_r更换为lmysqlclient。并没有根除这个问题。
在网上查看了遇到很多类似问题。后来在mysql官网上,搜索了一下lmysqlclient,发现一条如下的信息:
        Connector/C (libmysqlclient) is a client library for C development.
其实libmysqlclient是一个客户端类库为了C开发者,关于这个文件的说明地址如下:
http://dev.mysql.com/doc/connector-c/en/connector-c-installation-binary.html
在文中提到,使用rpm安装mysql的时候,需要安装的类库:shared和devel,而我只安装了devel。安装shared解决问题。

Installing MySQL Connector/C on Linux Using RPM Packages
There are two Linux RPM packages for MySQL Connector/C. Install one or both, depending on the capabilities you require:

The shared RPM contains the shared client library. Install this RPM if you intend to compile or run C API applications that depend on the shared client library.

The devel RPM contains the header files and the static client library. Install this RPM if you intend to compile C API applications.




问题扩展

1. 在之前安装lua的时候,也出现过/usr/bin/ld下无法找到目录。
    问题描述:
       在软件编译时出现usr/bin/ld: cannot find -lxxx的错误。
    原因:库文件并没有导入的ld检索目录中。
    解决方法:
        a. 确认库文件是否存在,比如-l123, 在/usr/lib, /usr/local/lib,或其它自定义的lib下有无lib123.so, 如果只是存在lib123.so.1,
那么可以通过ln -sv lib123.so.1   lib123.so,建立一个连接重建lib123.so.
        b. 检查/etc/ld.so.conf中的库文件路径是否正确,如果库文件不是使用系统路径,/usr/lib, /usr/local/lib, 那么必须在文件中加入。
        c. ldconfig 重建ld.so.cache文件,ld的库文件检索目录存放文件。
尤其刚刚编译安装的软件,必须运行ldconfig,才能将新安装的库文件导入ld.so.cache.

参考:
1. http://www.cnblogs.com/rollenholt/archive/2012/05/07/2487137.html
2. http://www.linuxqq.net/archives/733.html
3. http://www.jbxue.com/LINUXjishu/15034.html
4. http://dev.mysql.com/doc/connector-c/en/connector-c-installation-binary.html




© 著作权归作者所有

共有 人打赏支持
艳沐石
粉丝 2
博文 43
码字总数 23765
作品 0
大兴
程序员
Ubuntu下python安装mysqldb

Ubuntu下python安装mysqldb(驱动) 今天呢是Ubuntu下给python安装mysql驱动,方法如下:在终端中输入:sudo apt-get install python-mysqldbOK,搞定,简单吧?来测试下安装完成之后可以在Pyt...

cosmos180
2013/06/14
0
0
【python学习】windows下安装MySQLdb

今天真是纠结的一天。。。。 本来打算在pycharm里面开发python web,发现mysql驱动没有,就想去安装一个MySQLdb 结果花了好久才安装好MySQLdb 其实,pycharm里面不需要安装MySQLdb,里面自带...

wdl542710518
2016/04/14
0
0
ImportError: No module named MySQLdb

ImportError: No module named MySQLdb 该错误是源于我们没有安装Python连接MySQL所需的MySQLdb库而引起。 MySQL是最流行的开源数据库之一,但在Python标准库中并没有集成MySQL接口程序,MyS...

netmouse
2014/10/17
0
0
Python操作Mysql

首先,安装需要的环境,Mysql和Python就不说了,必备的东西。 主要是安装的MySQLdb,可以去sf.net下载,具体地址是http://sourceforge.net/projects/mysql-python/ 如果用Ubuntu,直接 sudo...

durban
2012/05/25
0
2
python安装MySQLdb的问题 ImportError: DLL load failed

在windows下面默认安装的python2.6再安装MySQLdb会遇到很多神奇的问题,如缺少库,编译错误等 例如python2.5出现 import MySQLdb Traceback (most recent call last): File "<stdin>", line...

mickelfeng
2013/07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

arcgis jsapi接口入门系列:总览

开发环境: arcgis jsapi版本4.9 由于我们这套代码是基于vue,webpack开发的,会有少数vue代码,但总体不影响 里面还有些我们公司的js库和html css,给出的代码不能百分百直接运行,主要还是...

canneljls
9分钟前
0
0
月薪80k阿里架构师漫谈他是如何从一名小码农走到架构师的

01 刚当程序员时,我是属于那种勤勤恳恳类型的员工,工作态度用认真来形容不为过,每天我几乎是团队里最早到公司,又最晚下班的一个。而组员张工一般情况下都是准时上下班的,即使项目进度比...

Java填坑之路
11分钟前
0
0
oracle的resetlogs机制浅析

oracle的resetlogs机制浅析 alter database open resetlogs 这个命令我想大家都很熟悉了,那有没有想过这个resetlogs选项为什么要用?什么时候用? 它的原理机制是什么?他都起哪些作用? 我...

突突突酱
13分钟前
0
0
JAVA 获取两个日期间的所有日期

public static List<String> getDates(String startDate, String endDate){    Date d1 = new SimpleDateFormat("yyyyMMdd").parse(startDate);//定义起始日期    Date d2 = new Simple......

尘叙缘
19分钟前
1
0
Innodb中的事务隔离级别和锁的关系

#一次封锁or两段锁? 因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,然后全部锁住,在方法运行之后,再全部解锁。...

Skqing
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部