python实现连接数据库mysql的步骤:

一、引入MySQLdb

二、获取与数据库的连接

三、执行SQL语句和存储过程

四、关闭数据库连接

1.什么是MySQLdb?

MySQLdb是用于python连接mysql数据库的接口;

2.连接数据库前确认事项:

(1)数据库名:testdb

(2)数据库的用户名:root  密码为:123456

(3)数据库IP:127.0.0.1

(4)数据库端口:3306

(5)查询数据库tablename表的记录数

3.给出代码

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3.  
  4. import MySQLdb
  5.  
  6. # 打开数据库连接
  7. db = MySQLdb.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='testsb', charset='utf8' )
  8.  
  9. # 使用cursor()方法获取操作游标
  10. cursor = db.cursor()
  11. sql = """select count(*) from tablename;"""
  1. # 使用execute方法执行SQL语句
    cursor.execute(sql)
    # 使用 fetchone() 方法获取一条数据
    data = cursor.fetchone()
  2.  
  3. print "Database version : %s " % data
  4.  
  5. # 关闭数据库连接
    db.close()

4.或者是:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import MySQLdb as mdb
  4.  
  5. # 连接数据库
  6. # conn = mdb.connect('localhost', 'root', 'root')
  7.  
  8. # 也可以使用关键字参数
  9. conn = mdb.connect(host="127.0.0.1",port=3306,user='root',passwd='123456',db='testdb',charset='utf8')
  1. # # 也可以使用字典进行连接参数的管理
    # config = { # 'host': '127.0.0.1',
    # 'port': 3306,
    # 'user': 'root',
    # 'passwd': 'root',
    # 'db': 'test',
    # 'charset': 'utf8'
    # }
    # conn = mdb.connect(**config)
  2.  
  3. # 如果使用事务引擎,可以设置自动提交事务,或者在每次操作完成后手动提交事务conn.commit()
    conn.autocommit(1)
  4.  
  5. # conn.autocommit(True)
  6.  
  7. # 使用cursor()方法获取操作游标
    cursor = conn.cursor()
  8.  
  9. # 因该模块底层其实是调用CAPI的,所以,需要先得到当前指向数据库的指针。
    TABLE_NAME = 'bsj'
    try:
      sql = """select count(*) from vehicle;"""
      cursor.execute(sql)
      # 返回单个的元组,也就是一条记录(row),如果没有结果则返回None
      result=cursor.fetchone()
  10.  
  11.   print(result)
  12.  
  13.   # 如果没有设置自动提交事务,则这里需要手动提交一次
      conn.commit()
  14.  
  15. except:
  1.   import traceback
      traceback.print_exc()
  2.  
  3.   # 发生错误时会滚
      conn.rollback()
  1. finally:
      # 关闭游标连接
      cursor.close()
  2.  
  3.   # 关闭数据库连接
      conn.close()

5.注意事项:

如果select本身取的时候有多条数据时:

cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','title'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。

cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title')),
---------------------

如果select本身取的时候只有一条数据时:

cursor.fetchone():将只返回一条结果,返回单个元组如('id','title')。

cursor.fetchall() :也将返回所有结果,返回二维元组,如(('id','title'),)

备注:其中的id和title为具体的内容

python在mysql在使用fetchall或者是fetchone时,综合起来讲,fetchall返回二维元组(元组中含有元组),fetchone只返回一维元组。

6.MySQLsb默认查询结果都是返回元组(tuple),通过使用不同的游标可以改变输出格式,这里传递一个cursors.DictCursor参数

  1. import MySQLdb.cursors
  2.  
  3. conn = MySQLdb.connect(host='localhost', user='root', passwd='root', db='test', cursorclass=MySQLdb.cursors.DictCursor)
  4. cursor = conn.cursor()
  5. sql = """select count(*) from tablename;"""
  6. cursor.execute(sql)
  7. r = cursor.fetchall()
  8. print(r)
  9. # 当使用位置参数或字典管理参数时,必须导入MySQLdb.cursors模块
  10.  
  11. # 也可以用下面的写法
  12. import MySQLdb as mdb
  13. conn = mdb.connect('127.0.0.1', 'root', '', 'testdb')
  14. cursor = conn.cursor(cursorclass=mdb.cursors.DictCursor)
  15. sql = """select count(*) from tablename;"""
  16. cursor.execute(sql)
  17. r = cursor.fetchall()
  18. print(r)

使用MySQLdb取回大结果集的缺点:

普通的操作无论是fetchall()还是fetchone()都是先将数据载入到本地再进行计算,大量的数据会导致内存资源消耗光。

解决方法:

  1.  

python使用MySQLdb实现连接数据库Mysql的更多相关文章

  1. Python安装MySQLdb并连接MySQL数据库

    当然了,前提是你已经安装了Python和MySQL.我的Python是2.6版本的. Python2.6的“Set”有点兼容性问题,自己照着改一下: http://sourceforge.net/fo ...

  2. 案例学python——案例二:连接数据库MySql

    调侃的话:案例一跑完之后,欣赏把玩了一番.人就有点飘飘然,昨天除了做饭吃饭,就是玩三国杀,江郎才尽,今天周一,不飘了,敲点代码,看看Python操作数据库有啥不一样的. 前期准备: 1.数据库 电脑上 ...

  3. python使用MySQLdb模块连接MySQL

    1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...

  4. Ubuntu下Python使用MySQLdb远程连接数据库的常见问题及解决方案

    本文基于http://www.cnblogs.com/fnng/p/3565912.html这篇博文,学习使用MySQLdb过程中遇到下面这些问题. 1. 安装MySQLdb时运行sudo pytho ...

  5. Python+request 使用pymysql连接数据库mysql的操作《十》

    使用指南.pymysql支持python2.7同时也支持python3.x.当前我用的是python2.7.所以过断选择了pymysql的使用,这里注意几点.一般我们连接数据库为了安全起见,都会要求按 ...

  6. python的MySQLdb库链接MySQL入门代码

    链接:http://www.runoob.com/python/python-mysql.html

  7. Python+request 使用pymysql连接数据库mysql的操作,基础篇《十一》

    笔记记录: (1)pymysql中所有的有关更新数据(insert,update,delete)的操作都需要commit,否则无法将数据提交到数据库,既然有了commit(),就一定有对应的rollb ...

  8. Ubuntu安装MySQL和Python库MySQLdb步骤

    一.安装MySQL服务器和客户端 执行以下命令: sudo apt-get install mysql-server-5.6 mysql-client-5.6 sudo apt-get install ...

  9. Python的MySQLdb模块安装,连接,操作,增删改

    1. 首先确认python的版本为2.3.4以上,如果不是需要升级python的版本     python -V   检查python版本 2. 安装mysql, 比如安装在/usr/local/my ...

随机推荐

  1. Python(可变/不可变类型,list,tuple,dict,set)

    补充:(可用操作技巧) >>> x=900 >>> y=900 >>> x==y True >>> type(x) is typ ...

  2. 基于properties文件的Spring Boot多环境切换

    当我们使用properties文件作为Spring Boot的配置文件而不是yaml文件时,怎样实现多环境使用不同的配置信息呢?     在Spring Boot中,多环境配置的文件名需要满足appl ...

  3. CentOS5.5上安装Python2.7及ez_setup和pip包

    CentOS5.5上安装Python2.7及ez_setup和pip包 下载 首先从Python官方下载源代码包下载 编译安装 这里将python安装到/opt/python27文件夹下 tar xv ...

  4. 初识go的tomb包

    在分析github.com/hpcloud/tail 这个包的源码的时候,发现这个包里用于了一个另外一个包,自己也没有用过,但是这个包在tail这个包里又起来非常大的作用 当时并没有完全弄明白这个包的 ...

  5. (转)创建Windows服务(Windows Services)N种方式总结

    转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...

  6. 【LeetCode】二叉搜索树的前序,中序,后续遍历非递归方法

    前序遍历 public List<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> list = n ...

  7. 一分钟内搭建全web的API接口神器json-server详解

    JSON-Server 是一个 Node 模块,运行 Express 服务器,你可以指定一个 json 文件作为 api 的数据源. 安装json-server npm install -g json ...

  8. 【转】【WPF】WPF中的Button的MouseDown事件不触发问题

    按照WPF的帮助说明,某些控件的路由事件被内部处理了,已经被标记为Handled,自行定义的事件处理代码便不再起作用了,有时候会很郁闷! 不过WPF提供了必要的方法. 1)使用相应的Preview事件 ...

  9. Canvas组件:画布,可以实现动画操作。

    Module  10 Canvas组件:画布,可以实现动画操作. TextArea:文本域. 在单行文本域中回车会激发ActionEvent. 用CheckBoxGroup实现单选框功能. Java中 ...

  10. html button 点击 显示倒计时秒数

    如下: <html> <body> <input type="button" value="click" id="cli ...