专栏首页python3python MySQLdb安装和使用

python MySQLdb安装和使用

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. importMySQLdb
  2. importMySQLdb.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. forrowinrows:
  13.    printrow['name'], row['txt']# bingo!
  14. # another (even better) way is:
  15. conn= MySQLdb.Connect(
  16. host='localhost', user='root',
  17. passwd='', db='test',compress=1)
  18. cursor= conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
  19. # ...
  20. # results by field name
  21. cursor= conn.cursor()
  22. # ...
  23. # ...results by field number

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python mysqldb 查询返回字

    MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictC...

    py3study
  • Python 操作 MariaDB 数据

    我们需要导入 MariaDB 的 Python 模块,即 import MySQLdb 才能使用 python 对 MariaDB进行数据的增删减查等操作。

    py3study
  • Python3 连接Mysql数据库

    初学Python ,目前无论是电子书还是网上的教程,都是针对于python2.7,但是对于部分语法以及模块都有变化。

    py3study
  • python mysqldb 查询返回字

    MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictC...

    py3study
  • python连接到SQList数据库以及简单操作

    背景了解: Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。Python定义了一套操作数据库的API...

    孤独的明月
  • ZetCode 教程翻译计划正式启动 | ApacheCN

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    ApacheCN_飞龙
  • Windows下Mysql5.7忘记root密码的解决方法

    2、在第一个cmd窗口执行 mysqld --defaults-file="C:ProgramDataMySQLMySQL Server 5.7my.ini" ...

    红芽
  • SQLite

      python就内置了SQLite,所以python使用SQLite不需要安装任何东西,直接进行使用。

    yaohong
  • 如何在CentOS 7上使用Linux审计系统

    在Linux审核系统可以帮助系统管理员创建一个审计跟踪,日志服务器上的每一个动作。我们可以通过检查审计日志文件来跟踪与安全相关的事件,将事件记录在日志文件中,以...

    何处惹尘埃
  • mongodb日志过大问题处理

    icenycmh关注0人评论 1256人阅读 2017-09-11 11:06:15

    拓荒者

扫码关注云+社区

领取腾讯云代金券