http://blog.chinaunix.net/uid-8487640-id-3183185.html

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操作:

  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();

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

  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();

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

  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

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

  1. python MySQLdb安装和使用

    MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb: 首先要下载下载:请到官方网站http://sourceforge.net/projects/mysql-py ...

  2. mysqldb 安装

    MySQLdb是python的一个标准的连接和操纵mysql的模块. ubuntu下安装: sudo apt-get install python-mysqldb sudo apt-get insta ...

  3. win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visual C++ 14.0 is required

    在python3.6中操作数据库,再按python2.7安装MySQLdb进行数据库连接已经不可用了,我使用的是另外一个方法:PyMySQL,安装好之后还是不能直接连接MySQL的,启动项目后报No ...

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

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

  5. windows python MySQLdb 安装配置

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

  6. MySQLdb安装记

    1 安装 python-devel 2. site.cfg 改mysql_config成实际位置 mysql_config = /mysqldata/mariadb530/bin/mysql_conf ...

  7. centos mysqldb 安装

    yum install mysql-devel.x86_64 yum install python-devel pip install MySQL-python

  8. MySQLdb模块安装-win环境

    原帖地址:http://blog.csdn.net/wklken/article/details/7253245 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见  P ...

  9. windows(32位 64位)下python安装mysqldb模块

    windows(32位 64位)下python安装mysqldb模块 www.111cn.net 编辑:mengchu9 来源:转载 本文章来给各位使用在此windows系统中的python来安装一个 ...

随机推荐

  1. JS代码判断IE6,IE7,IE8,IE9的函数代码

    JS代码判断浏览器版本,支持IE6,IE7,IE8,IE9!做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码 做网页有时候会用到JS ...

  2. zigbee智能家居基础扫盲

    zigbee Zigbee是基于IEEE802.15.4标准的低功耗个域网协议.根据这个协议规定的技术是一种短距离.低功耗的无线通信技术.这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和&qu ...

  3. Java+JQuery实现网页显示本地文件目录(含源码)

    原文地址:http://www.cnblogs.com/liaoyu/p/uudisk.html 源码地址:https://github.com/liaoyu/uudisk 前段时间为是练习JQuer ...

  4. bzoj1835

    最近状态太差,先补补结题报告吧这是一道好题设f[i,j]表示到第j个位置建了i个基站且第j个位置建了基站的最小花费不难得到f[i,j]=min(f[i-1,k]+cost[k+1,j])+c[j];首 ...

  5. bzoj2242

    快速幂 扩展欧几里得 baby-step-giant-step 可以自行baidu 程序附部分注释 ; type link=^node;      node=record        re,wh:l ...

  6. 笔记本CPU的型号和类型的区分方法

    笔记本CPU的型号和类型的区分方法: 1.所有笔记本CPU型号后面默认为M,代表移动版. 2.如果M变为H,则代表高性能版本,时钟频率更高,性能强,但功耗更大一点,如I7 4500H. 3.如果M变为 ...

  7. android camera(四):camera 驱动 GT2005

    摄像头主要参数: 1.MCLK  24MHz: 2.PCLK  48~52MHz~: 3.电压 1.8V(1.5V).2.8V: 4.scl(IIC时钟)100KHz或者400KHz. 下载:常用摄像 ...

  8. xcode7下开发ios9等相关问题记录

    1.默认使用HTTPS请求如果在Xcode 9之前使用的时http请求,那么在XCode 9上编译的App是不能联网的,会提示如下错误:App Transport Security has block ...

  9. MAC 下安装opencv遇到问题的解决方法(安装homebrew, wget)

    遇到问题: (1)Mac安装OpenCV下载ippicv_macosx_20141027.tgz失败解决方案 先附上当时的报错信息: -- ICV: Downloading ippicv_macosx ...

  10. nginx定时备份access访问日志并重启nginx

    用.sh脚本写了备份日志脚本 其实就是转移文件改名后重新建一个空文件 mv /alidata/log/nginx/access/wxtest.log /alidata/log/nginx/access ...