准备工作 import MySQLdb

Linux系统自带了Python,但并不是都有这个包,至少我每次拿到一台全新的服务器时候,都发现没有装这个包。

这个东西的下载地址是

http://sourceforge.net/projects/mysql-python/files/mysql-python/

最新版本是1.2.3的。如果是微软用户 下载后缀是msi的, 像我这样的Linux用户,就下载MySQL-python-1.2.3.tar.gz 就可以了。

(我上一次搭环境是可以下载的,但偏偏写博客的时候下载不了。。。那就百度一下这个包吧)

我下载了MySQL-python-1.2.3.tar.gz,上传到了百度云, http://pan.baidu.com/s/1ntmMBIL

安装MySQLdb

现在假设你已经下载到了MySQL-python-1.2.3.tar.gz 这个安装包 ,传到服务器上之后

1,解压 tar xvfz MySQL-python-1.2.3.tar.gz

2,cd MySQL-python-1.2.3

3,python setup.py build

4,sudo python setup.py install

这4步是 README文件中的安装步骤。

但它有几个前提条件:Python 2.3.4或以上,setuptools等。

如果你卡在第3步, 可能提示你 “ImportError: No module named setuptools”

那么你就需要安装setuptools这个工具了。如果你第3步没有报这个错误,可以跳过这一小段。

安装setuptools

下载地址https://pypi.python.org/pypi/setuptools ,这个网页很长,下载地址在最下面,用鼠标拉到底,再向上滚一屏大概可以看见下载链接。

我计划下载这个文件 setuptools-7.0.tar.gz  我也放在了百度云 http://pan.baidu.com/s/1eQenyts

1,解压 tar xvzf setuptools-7.0.tar.gz

2,cd setuptools-7.0

3,python setup.py install

然后我看到了错误消息

  File "setup.py", line 18
    with open(init_path) as init_file:
            ^
SyntaxError: invalid syntax

打开setuptools的README.txt文件,看到了这句话。

Setuptools requires Python 2.6 or later. To install setuptools

它要求Python是2.6以上,可我的Python居然只有Python 2.3.4 -_-

好吧 ,希望你比我好运。下面升级Python。

安装Python

去Python的官网下载一个最新的Python2,因为我没有用过Python3.

地址 https://www.python.org/downloads/release/python-278/

Linux用户下载

我的云盘地址,Python 2.7.8 http://pan.baidu.com/s/1jGtEqnc

上传到服务器后,开搞。

1,解压 tar xvzf Python-2.7.8.tgz

2,cd Python-2.7.8  我本来想看下README,哇,一千多行

3,./configure

4,make

5,make install

/usr/bin/install: cannot create regular file `/usr/local/bin/python2.7': Permission denied

如果你看到这句话,这是因为把文件放到/usr/local/bin/ 这个目录下需要root权限,所以先切换到root用户。 su

在root用户下执行make install 如果没有报错 ,很可能就是安装成功了。

# python

Python 2.7.8 (default, Nov 8 2014, 12:38:12)
[GCC 3.4.5 20051201 (Red Hat 3.4.5-2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

说明你现在的版本是2.7.8了。

现在返回去安装setuptools。回到setuptools的目录下,执行上面的第3步。

3,python setup.py install

这次果然没报错,看来升级Python 有效果。

安装了setuptools之后,别忘了,这次是说 “安装MySQLdb”, 这跑题有点远。

继续回到MySQL-python-1.2.3的目录,执行上面的第4步。

4,sudo python setup.py install

sh: mysql_config: command not found
Traceback (most recent call last):
File "setup.py", line 15, in <module>
metadata, options = get_config()
File "/home/work/fupeng/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/home/work/fupeng/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

又报了一堆错误。好像没有找打mysql_config 这个文件 ,上网搜了搜。http://blog.csdn.net/mldxs/article/details/23946129 这个博客上说

先执行 find / -name 'mysql_config'

然后修改MySQL-python-1.2.3目录下的site.cfg文件,注意不是setup.cfg

去掉mysql_config=XXX这行的注释,并改成mysql_config=/usr/bin/mysql_config(以mysql_config文件所在机器上的目录为准)

mysql_config=/home/work/webserver/mysql/bin/mysql_config

再执行第3步,第4步。

3,python setup.py build

4,sudo python setup.py install

没报错。

python

import MySQLdb 

/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/_mysql.pyc, but /home/work/fupeng/MySQL-python-1.2.3 is being added to sys.path

又报错了, 说这个东西已经存在了。 我决定去/usr/local/lib/python2.7/site-packages/ 这个目录下 把Mysql有关的东西都删了。

rm MySQL_python-1.2.3-py2.7-linux-x86_64.egg

锲而不舍,继续安装。

4,sudo python setup.py install

测试

python

import MySQLdb 

ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

又报错 。 这是我装这个东西报错最多的一次 。没事,百度一下。果然有人遇到。 这面这个网站解决了我的问题。

http://www.python tab.com/html/2013/pythonhexinbiancheng_0816/542.html

这个错误是说 不能打开ibmysqlclient_r.so.16 这个共享库。

两种解决方法:

1,如果你安装过Mysql客户端,你应该有这个文件,只是没有放在系统默认搜索的共享库路径下/lib /lib64 。 这是你只要能知道你的Mysql装在了什么地方,搜索到这个文件,作个软连接,放到/lib 就可以了。

将mysql/lib下所有关于libmysqlclient的so文件软链接到/usr/lib下。

>>> ln -s /usr/local/mysql/lib/mysql/libmysqlclient* /usr/lib

“/usr/local/mysql/lib/mysql/libmysqlclient” 这个路径是你安装Mysql的地方。我的就不在这里。

重新加载配置

>>> ldconfig

2,让Python-mysql去找 你的mysql共享库。

在MySQL-python-1.2.3的安装目录下找到site.cfg,将

#mysql_config = XXXXXXXXXXXXXXXX

注释符号去掉,并填上mysql_config的地址

我用的第一种 制作软连接 的方法。

再测试

python

>>> import MySQLdb

>>>

什么也没有发生 ,没有消息就是好消息。安装完毕。

本来想把Python中对Mysql的操作写一点在这里,没想到安装花了这么久的时间。 那么,后面的,就写在下一篇了吧。

Python中使用Mysql(安装篇)的更多相关文章

  1. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  2. (转)Python中操作mysql的pymysql模块详解

    原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python ...

  3. Navicat的使用与python中使用MySQL的基本方法

    Navicat的使用与python中使用MySQL的基本方法 Navicat的下载及安装 下载地址 http://www.navicat.com.cn/download/navicat-premium ...

  4. python中实现mysql连接池

    python中实现mysql连接池 import pymysql from DBUtils.PooledDB import PooledDB MYSQL_HOST = 'localhost' USER ...

  5. LNMP平台搭建---MySQL安装篇

    在前两篇中,安装了一个基本的Web服务器,但是只能提供静态网页查看,要做成动态网站,就必须要数据库或其他编程语言支持了,这里先介绍MySQL数据库的安装. MySQL是一个开源的数据库,在互联网行业应 ...

  6. 在python中配置MySQL数据库

    MySQL数据库(1) 尽管用文件形式将数据保存到磁盘,已经是一种不错的方式.但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,它们称之为“资料库”) ...

  7. python中的mysql操作

    一. 数据库在自动化测试中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. python中的数 ...

  8. Python中使用MySQL

    @1: 安装MySQL: lxw ~$ sudo apt-get install mysql-server 可以通过 sudo netstat -tap | grep mysql` 命令检查之后,如果 ...

  9. sqlalchemy python中的mysql数据库神器

    在介绍sqlalchemy之前,我们先了解一下ORM. ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.也就是说ORM 将数据库中的表与面向对象语言中的类建 ...

随机推荐

  1. 【常见踩坑】USB调试安装失败(Installation failed with message INSTALL_CANCELED_BY_USER)

    一.写在前面 最近一直在忙活着项目重构,忙活了一个多月(那是天天加班,不分昼夜呀,ps:这不是我司要求的哈),终于把沉积了三四年的老项目给重构了,目前在测试阶段,也总算有了点闲时来跟大家分享分享一些问 ...

  2. JavaMail邮件发送不成功的那些坑人情况及分析说明

    [我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言   JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...

  3. C#传递委托给C或C++库报错__对XXX类型的已垃圾回收委托进行了回调

    出现的原因: 因为你传给C或C++的委托是局部的.可能传过去之后就被垃圾回收了,再次调用就会异常. 想办法做成全局的就好 public void Play(string url) { _bassStr ...

  4. Redis构建分布式锁

    1.前言 为什么要构建锁呢?因为构建合适的锁可以在高并发下能够保持数据的一致性,即客户端在执行连贯的命令时上锁的数据不会被别的客户端的更改而发生错误.同时还能够保证命令执行的成功率. 看到这里你不禁要 ...

  5. 豆瓣电影Top250基本信息抓取

    豆瓣电影Top250基本信息抓取 最近想看电影,但是想看一些有营养的,所以就去豆瓣上看电影评分,但是豆瓣上的评分没有排序,所以就用python把网站内容爬下来了,然后按评分做了排序.具体代码参见git ...

  6. win7禁用离开模式,让笔记本卡盖后进入休眠

    进入注册列表项 将HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPower,中的“AwayModeEnabled”删除即 ...

  7. 想系统的学习一下项目管理,推荐PRINCE2

    参加pmp培训,考个pmp证书就足矣应付面试. 个人并不推荐看那些外文原版书籍,我看过一两本,水平与实用性并不是你想象的那么好,除非你是做理论研究,为了发表论文. 另一本就推荐prince2的教材,p ...

  8. webix .datatable 表格分页

    grid表格返回参数大都是 以下这种格式(参数名可能不一样) { data:[{...},{...} ...], count:39 } webix的参数格式为 { data:[{...},{...}, ...

  9. 手机自动化测试:appium源码分析之bootstrap二

    手机自动化测试:appium源码分析之bootstrap二   在bootstrap项目中的io.appium.android.bootstrap.handler包中的类都是对应的指令类, priva ...

  10. 基于MVC和Bootstrap的权限框架解决方案 二.添加增删改查按钮

    上一期我们已经搭建了框架并且加入了列表的显示, 本期我们来加入增删改查按钮 整体效果如下 HTML部分,在HTML中找到中意的按钮按查看元素,复制HTML代码放入工程中 <a class=&qu ...