文档章节

python MySQLdb安装和使用

 我的去哈哈
发布于 2014/03/28 04:23
字数 1299
阅读 29573
收藏 2

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


© 著作权归作者所有

粉丝 3
博文 57
码字总数 55253
作品 0
东城
私信 提问
加载中

评论(2)

没懂
能不能把博客中的这段话,详细说一下,
然后: 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
最后重新再测试一下,就不会有上面的问题了

这几个步骤具体都怎么操作?????
没懂
ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config 这是一句命令吗

ImportError: No module named MySQLdb

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

netmouse
2014/10/17
114
0
Centos下安装MySQLdb若干错误总结

1、下载,解压python-mysql 2、运行python setup.py install 3、Error1: 报错mysql_config not found 首先查找mysqlconfig的位置,使用find / -name mysqlconfig 其次、修改setup_posix.py文......

shaohan
2014/03/05
2.1K
0
Mac 之xampp 安装MySQLdb【非Pip安装】

刚学习python,到数据库这块,需要安装一个MySQLdb。记录下碰到的问题~~~ 我的环境:Mac High Sierra 10.13.6 + python 2.7 + XAMPP。 特此说明:以下安装只针对本机以及本人碰到的问题,不一...

干干
2018/09/10
87
0
求python3.3 + django1.6不用MysqlDb连接mysql5.5的settings.py的配置怎么写

现在Mysqldb插件不支持python3,我下载了Mysql官网上的mysql-connector-python-1.0.9-py3.3.msi安装后,可以连上mysql,但是我在学习django1.6,django1.6的配置文件中'ENGINE': 'django.db.......

宝玉
2013/04/22
2.2K
4
python mysqldb的安装

首先:需要安装setuptools-0.6c11 安装过程: wget -O setuptools-0.6c8.tar.gz http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c8.tar.gz tar xzvf setuptools-0.6c8.......

崔小涣
2014/05/16
27
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS3 : transition 属性

本文转载于:专业的前端网站➧CSS3 : transition 属性 CSS3的 transition 属性用于状态过度效果! 1、语法: 1 transition: property duration timing-function delay;2 -moz-transition: ...

前端老手
16分钟前
3
0
一个简单的加密工具,性能貌似不行,待优化

一个简单的加密工具,性能貌似不行,待优化 package com.kxvz.common.crypt;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import java.i......

Kxvz
18分钟前
3
0
vue实现路由懒加载

一、为什么要实现懒加载 减少首屏加载时间,避免白屏 二、常用的懒加载方式有两种:即使用vue异步组件 和 ES中的import a、vue异步加载: import Vue from 'vue' import Router from 'vue-ro...

Bing309
21分钟前
5
0
axios拦截器

axios.interceptors.response.use(response => { if (response.data.code == 0) { return response.data } else if (response.data.code == 600) { Cookies.remove('Admin-Token') router.pu......

Cyoya
23分钟前
5
0
给大家分享下部署云桌面的几个小技巧

从去年4月份开始我们公司就开始使用云桌面来进行上网办公的,在这一年多的使用过程中并没有出现像网上和有些用户说的那样,说云桌面各种坑老是出现这样和那样的问题,而我们之所以用的还不错...

GZASD
24分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部