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

转载于:https://www.cnblogs.com/bincoding/p/6480884.html

python MySQLdb安装和使用相关推荐

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

    PYTHON -MYSQLDB安装遇到的问题和解决办法 参考文章: (1)PYTHON -MYSQLDB安装遇到的问题和解决办法 (2)https://www.cnblogs.com/gaoshanx ...

  2. winpython是个坑_Win10 Python MySQLdb安装爬的坑

    先报一下环境:win10 python2.7 先前安装了Anaconda,然后安装了pyCharm. 安装的包 MySQL-python-1.2.4b4.win32-py2.7.exe pyCharm ...

  3. python mysqldb安装_解决centos7 安装MySQLdb-python 报错 方案

    运行 pip install MySQL-Python 报错: 云服务器 Command python setup.py egg_info failed with error code 1 in 继续 ...

  4. python mysqldb安装_Flask干货:访问数据库——Python数据库框架MySQLPython

    图 | 源网络文 | 5号程序员 上一次我们学会了数据库安装,但只是安装好没教大家怎么使用! 嘿,别担心,这不有我呢嘛. 今天就由我给大家介绍介绍框架MySQL-Python. 01 MySQL-Py ...

  5. python数据库安装教程_python MySQLdb Windows下安装教程及问题解决方法

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

  6. Python 如何安装 MySQLdb ?

    人生苦短 我用python Python 标准数据库接口为 Python DB-API, Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库, ...

  7. cygwin mysql安装教程_Cygwin 下安装Python MySQLdb

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

  8. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  9. MySQLdb安装与使用

    一.MAC系统 1. 安装(使用pip命令) [1]使用 easy_install pip命令安装pip [2]安装成功,输入pip显示用法.命令行等信息:命令 which pip 可以查看安装位置 ...

  10. 软件包ipython没有可安装候选_解决python 自动安装缺少模块的问题

    解决python 自动安装缺少模块的问题 场景 我写个脚本给别人用,但是这个脚本中包含了一个第三方库. 当然对方执行的时候就会提示缺少,能否让python自动安装呢? 解决 try: import r ...

最新文章

  1. IBM 3650 M3阵列卡配置
  2. 【斗医】【13】Web应用开发20天
  3. Cassandra key说明——Cassandra 整体数据可以理解成一个巨大的嵌套的Map MapRowKey, SortedMapColumnKey, ColumnValue...
  4. Codeforces 1025D(区间dp)
  5. 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
  6. 和菜鸟一起学证券投资之股市常见概念公式1
  7. ActiveMQ网络连接
  8. ceph学习之pool
  9. python继承多重继承
  10. Omni Recover for Mac版 - 一站式iPhone数据恢复
  11. Qml学习笔记-Repeater的基本使用
  12. 使用继承思想,去开发一款组件(element-ui collapse组件为例子)
  13. Angular / Ionic,React,Vue? 使用Stencil.js面向未来的应用程序!
  14. Android模拟器中sd卡的创建和文件的上传
  15. iphone label初始化碰到的问题
  16. 《陶哲轩实分析》习题10.4.1
  17. 苹果7微信提醒服务器,苹果7plus微信有消息时候怎么不提醒
  18. 蒋涛:《Orange’S:一个操作系统的实现》属于真正Hacker的
  19. 优酷.kux文件折腾记
  20. c语言中分号作用,在C语言中逗号、分号等的用法

热门文章

  1. vim格式化代码实际上就是 缩进代码, 命令是等号=
  2. 世界独创的螺旋数组低于n(o^2)的生成算法
  3. TC SRM 665 DIV2 A LuckyXor 暴力
  4. android的Imageview的src和background
  5. [转载] 大道至简:软件工程实践者的思想——第八章 你看得到工具的本质吗
  6. React-Native 使用自定义IconFont
  7. 现在该去外企吗?入职微软三个月的我告诉你!
  8. Spring Cloud+Spring Boot高频面试题解析
  9. 加精!大型互联网应用基于CAS的SSO架构
  10. 给跳槽的人 7 点建议