MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb:

  1. 首先要下载下载:请到官方网站http://sourceforge.net/projects/mysql-python/或者点击链接下载http://downloads.sourceforge.net/project/mysql-python/mysql-python-test/1.2.3c1/MySQL-python-1.2.3c1.tar.gz?use_mirror=nchc

  2. 解压:tar zxvf MySQL-python*

  3. 进入文件目录,运行以下命令:
    python setup.py install

  4. 安装完成,到你的python安装目录下的site-packages目录里检查以下文件是否存在,如果存在即代表安装成功了
    Linux:MySQL_python-1.2.3c1-py2.6-linux-i686.egg
    Mac OS X:MySQL_python-1.2.3c1-py2.6-macosx-10.4-x86_64.egg
    注:如果碰到mysql_config not found的问题,有两种方法解决:
    1)ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
    将mysql_confi从你的安装目录链接到/usr/local/bin目录下,这样就可以在任意目录下访问了(也可以放到/usr/bin)
    2)编辑源码文件夹的site.cfg文件,去掉#mysql_config = /usr/local/bin/mysql_config前的注释#,修改后面的路径为你的mysql_config真正的目录就可以了。(如果不知道mysql_config在哪里,运行命令:whereis mysql_config)

注:如果碰到import error: libmysqlclient.so.18: cannot open shared object file: No such file or directory

解决方法: locate or find libmysqlclient.so.18

link path/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

vi /etc/ld.so.conf    //加入libmysqlclient.so.18 所在的目录

插入: /usr/lib/

保存退出后执行/sbin/ldconfig生效

  1. 测试方法
    1)运行命令python进入python运行环境
    2)输入以下python代码进行测试
    import MySQLdb

  2. test=MySQLdb.connect(db='mydb',host='myhost',user='u',passwd='p')

  3. cur = test.cursor()

  4. cur.execute('show databases;')

  5. for data in cur.fetchall():

  6. print data

  7. 3)如果你在屏幕上看到了你几个数据库的库名的输出代表你安装成功了

  8. 可能碰到的问题
    1)问题:ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory
    原因是python无法找到mysql目录下的libmysqlclient_r.so.16动态库,其实MySQLdb是调用mysql的c函数库.所以本机上首先得安装了mysql
    然后: export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$LD_LIBRARY_PATH
    并且将/usr/local/mysql5.1/lib/mysql 放入/etc/ld.so.conf中
    /etc/ld.so.conf改后内容为:
    include ld.so.conf.d/*.conf
    /usr/local/mysql5.1/lib/mysql
    最后重新再测试一下,就不会有上面的问题了

MySQLdb操作:

Python代码

  1. #!/usr/bin/env python

  2. #coding=utf-8

  3. ###################################

  4. #MySQLdb 示例

  5. #

  6. ##################################

  7. import MySQLdb

  8. #建立和数据库系统的连接

  9. conn = MySQLdb.connect(host='localhost', user='root',passwd='longforfreedom')

  10. #获取操作游标

  11. cursor = conn.cursor()

  12. #执行SQL,创建一个数据库.

  13. cursor.execute("""create database python """)

  14. #关闭连接,释放资源

  15. cursor.close();

#!/usr/bin/env python

#coding=utf-8

##################################

#MySQLdb 示例 #

##################################

import MySQLdb

#建立和数据库系统的连接

conn = MySQLdb.connect(host='localhost', user='root',passwd='longforfreedom')

#获取操作游标

cursor = conn.cursor()

#执行SQL,创建一个数据库.

cursor.execute("""create database python """)

#关闭连接,释放资源

cursor.close();

创建数据库,创建表,插入数据,插入多条数据

Python代码:

  1. #!/usr/bin/env python

  2. #coding=utf-8

  3. ###################################

  4. #MySQLdb 示例

  5. #

  6. ##################################

  7. import MySQLdb

  8. #建立和数据库系统的连接

  9. conn = MySQLdb.connect(host='localhost', user='root',passwd='longforfreedom')

  10. #获取操作游标

  11. cursor = conn.cursor()

  12. #执行SQL,创建一个数据库.

  13. cursor.execute("""create database if not exists python""")

  14. #选择数据库

  15. conn.select_db('python');

  16. #执行SQL,创建一个数据表.

  17. cursor.execute("""create table test(id int, info varchar(100)) """)

  18. value = [1,"inserted ?"];

  19. #插入一条记录

  20. cursor.execute("insert into test values(%s,%s)",value);

  21. values=[]

  22. #生成插入参数值

  23. for i in range(20):

  24. values.append((i,'Hello mysqldb, I am recoder ' + str(i)))

  25. #插入多条记录

  26. cursor.executemany("""insert into test values(%s,%s) """,values);

  27. #关闭连接,释放资源

  28. cursor.close();

#!/usr/bin/env python

#coding=utf-8

###################################

#MySQLdb 示例 #

##################################

import MySQLdb

#建立和数据库系统的连接

conn = MySQLdb.connect(host='localhost', user='root',passwd='longforfreedom')

#获取操作游标

cursor = conn.cursor()

#执行SQL,创建一个数据库.

cursor.execute("""create database if not exists python""")

#选择数据库

conn.select_db('python');

#执行SQL,创建一个数据表.

cursor.execute("""create table test(id int, info varchar(100)) """)

value = [1,"inserted ?"];

#插入一条记录

cursor.execute("insert into test values(%s,%s)",value);

values=[]

#生成插入参数值

for i in range(20):

values.append((i,'Hello mysqldb, I am recoder ' + str(i)));

#插入多条记录

cursor.executemany("""insert into test values(%s,%s) """,values);

#关闭连接,释放资源

cursor.close();

查询和插入的流程差不多,只是多了一个得到查询结果的步骤

Python代码:

  1. #!/usr/bin/env python

  2. #coding=utf-8

  3. #

  4. # MySQLdb 查询

  5. #

  6. #######################################

  7. import MySQLdb

  8. conn = MySQLdb.connect(host='localhost', user='root', passwd='longforfreedom',db='python')

  9. cursor = conn.cursor()

  10. count = cursor.execute('select * from test')

  11. print '总共有 %s 条记录',count

  12. #获取一条记录,每条记录做为一个元组返回

  13. print "只获取一条记录:"

  14. result = cursor.fetchone();

  15. print result

  16. #print 'ID: %s info: %s' % (result[0],result[1])

  17. print 'ID: %s info: %s' % result

  18. #获取5条记录,注意由于之前执行有了fetchone(),所以游标已经指到第二条记录了,也就是从第二条开始的所有记录

  19. print "只获取5条记录:"

  20. results = cursor.fetchmany(5)

  21. for r in results:

  22. print r

  23. print "获取所有结果:"

  24. #重置游标位置,0,为偏移量,mode=absolute | relative,默认为relative,

  25. cursor.scroll(0,mode='absolute')

  26. #获取所有结果

  27. results = cursor.fetchall()

  28. for r in results:

  29. print r

  30. conn.close()

默认mysqldb返回的是元组,这样对使用者不太友好,也不利于维护
下面是解决方法

  1. import MySQLdb

  2. import MySQLdb.cursors

  3. conn = MySQLdb.Connect (

  4. host = 'localhost', user = 'root' ,

  5. passwd = '', db = 'test', compress = 1,

  6. cursorclass = MySQLdb.cursors.DictCursor, charset='utf8') // <- important

  7. cursor = conn.cursor()

  8. cursor.execute ("SELECT name, txt FROM table")

  9. rows = cursor.fetchall()

  10. cursor.close()

  11. conn.close()

  12. for row in rows:

  13. print row ['name'], row ['txt'] # bingo!

    1. # another (even better) way is:

    2. conn = MySQLdb . Connect (

    3. host = ' localhost ', user = 'root' ,

    4. passwd = '', db = 'test' , compress = 1)

    5. cursor = conn.cursor (cursorclass = MySQLdb.cursors.DictCursor)

    6. # ...

    7. # results by field name

    8. cursor = conn.cursor()

    9. # ...

    10. # ...results by field number

python MySQLdb安装和使用的更多相关文章

  1. PYTHON -MYSQLDB安装遇到的问题和解决办法

    目前下载的mysqldb在window下没有exe安装包了,只有源码. 使用python setup.py install 命令安装, 报错如下: 异常信息如下: F:\devtools\MySQL- ...

  2. windows python MySQLdb 安装配置

    一.环境 系统:windows10/7/8 软件: 1.python2.7.XX(https://www.python.org/downloads/或者https://www.python.org/f ...

  3. Python MySQLdb在Linux下的快速安装

    在家里windows环境下搞了一次 见   python MySQLdb在windows环境下的快速安装.问题解决方式 http://blog.csdn.NET/wklken/article/deta ...

  4. cygwin 下安装python MySQLdb

    cygwin 下安装python MySQLdb 1) cygwin 更新 运行 cygwin/setup-x86_64.exe a 输入mysql,选择下面的包安装: libmysqlclient- ...

  5. Python 3安装MySQLdb

    Python 2安装的是mysql-python,Python 3安装mysql-python以后,仍然不能import MySQLdb,原来Python 3应该安装mysqlclient,就可以im ...

  6. python MySQLdb在windows环境下的快速安装

    python MySQLdb在windows环境下的快速安装.问题解决方式 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见 Python MySQLdb在Linux下 ...

  7. windows 环境下安装python MySQLdb

    使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...

  8. 117、python MySQLdb在windows环境下的快速安装、问题解决方式

    使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...

  9. python MySQLdb Windows下安装教程及问题解决方法(python2.7)

    使用python访问mysql,需要一系列安装 linux下MySQLdb安装见  Python MySQLdb在Linux下的快速安装http://www.jb51.net/article/6574 ...

随机推荐

  1. 字符集不同导致的ORA-00972

    使用ssh登录RAC的两个节点,分别执行相同的sql语句,发现其中一个报错ora-00972: 检查后发现,左侧节点的客户端使用的字符集是SecureCRT的默认字符集,右侧使用的是UTF-8

  2. centos 6&7 升级openssh

    1.查看现在的版本 # rpm -qa | grep openssh openssh-clients-6.6.1p1-22.el7.x86_64 openssh-server-6.6.1p1-22.e ...

  3. iOS runtime执行时具体解释

    什么是runtime? runtime直译就是执行时间,run(跑,执行) time(时间),网上大家都叫它执行时,它是一套比較底层的纯C语言API,属于一个C语言库,包括了非常多底层的C语言API, ...

  4. 利用 PowerShell 分析SharePoint WebApplication 体系结构

    之前一篇文章<两张图看清SharePoint 2013 Farm 逻辑体系结构>谈到Web Application,Content Database,Site Collection的关系. ...

  5. [trouble shoot]atol和atoll

    就终于的结果来看,事实上就是一个小的错误. 但定位错误的时间比較漫长了.. . 背景:出错的代码是 一段执行在 linux server上的程序,程序的主要功能是处理银行pos刷卡记录并做一些计算.最 ...

  6. weblogic+eclipse插件部署多个项目

    第一篇博客...上班时间不多废话,直接上图. 首先环境我就不说了,装好weblogic,eclipse,以及weblogic的插件. eclipse的weblogic插件能够从eclipse上的Hel ...

  7. Android通讯录管理(获取联系人、通话记录、短信消息)

    前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清 ...

  8. [转]如何在 Git 里撤销(几乎)任何操作

    任何版本控制系统的一个最有的用特性就是“撤销 (undo)”你的错误操作的能力.在 Git 里,“撤销” 蕴含了不少略有差别的功能. 当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点 ...

  9. php实现ZIP压缩文件解压缩(转)

    测试使用了两个办法都可以实现: 第一个:需要开启配置php_aip.dll <?php //需开启配置 php_zip.dll //phpinfo(); header("Content ...

  10. 权限管理系统(五):RBAC新解,基于资源的权限管理

    本文讨论以角色概念进行的权限管理策略及主要以基于角色的机制进行权限管理是远远不够的.同时我将讨论一种我认为更好的权限管理方式. 1.什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念.角色是 ...