MySQLdb操作数据库(二)

查询数据

使用execute()函数执行查询sql语句后,得到的只是受影响的行数,并不能真正拿到我们查询的内容。没关系,这里游标cursor中还提供了三种提取数据的方法:fetchone、fetchmany、fetchall,每个方法都会导致游标游动,所以必须注意游标的位置
cursor. fetchone()
获取游标所在处的一行数据,返回的是元组,没有则返回None,
cursor. fetchmany(size=None)
接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据。返回的结果是一个元组,元组的元素也是元组,由每行数据组成;
cursor. fetchall()
接收全部的返回结果行。返回的结果是一个元组,元组的元素也是元组,由每行数据组成;

注意:
这些函数返回的结果数据均来自exceute()函数查询的结果集。如果exceute()结果集中没有数据,将会返回空元组。

Fetchone示例

import MySQLdb
import random
try:
    conn = MySQLdb.connect(
        host = ‘127.0.0.1‘,
        user = ‘root‘,
        passwd = "123456",
        port = 3306)

    conn.select_db(‘python‘)# 

    cur = conn.cursor()# 获取游标
    cur.execute("select * from user")
    while 1:
        res = cur.fetchone()
        if res is None:
        #表示已经取完结果集
            break
        print res
    cur.close()
    conn.commit()
    conn.close()
    print u"sql执行成功"
except Exception, e:
print e

从execute()函数的查询结果中取数据,以元组的形式返回游标所在处的一条数据,如果游标所在处没有数据,将返回空元组,该数据执行一次,游标向下移动一个位置。fetchone()函数必须跟exceute()函数结合使用,并且在exceute()函数之后使用

Fetchmany示例

import MySQLdb
import random
try:
    conn = MySQLdb.connect(
        host = ‘127.0.0.1‘,
        user = ‘root‘,
        passwd = "123456",
        port = 3306)

    conn.select_db(‘python‘)# 选择pythonDB数据库

    cur = conn.cursor()# 获取游标
    cur.execute("select * from user")
    resTuple = cur.fetchmany(2)#2表示取两条数据
    print u"结果集类型:",type(resTuple)
    for i in resTuple:
        print i

    cur.close()
    conn.commit()
    conn.close()
    print u"sql执行成功"
except Exception, e:
print e

从exceute()函数结果中获取游标所在处的size条数据,并以元组的形式返回,元组的每一个元素都也是一个由一行数据组成的元组,如果size大于有效的结果行数,将会返回cursor.arraysize条数据,但如果游标所在处没有数据,将返回空元组。查询几条数据,游标将会向下移动几个位置。fetmany()函数必须跟exceute()函数结合使用,并且在exceute()函数之后使用

Fetchall示例

import MySQLdb
try:
    conn = MySQLdb.connect(
        host = ‘127.0.0.1‘,
        user = ‘root‘,
        passwd = "123456",
        port = 3306)

    conn.select_db(‘python‘)# 选择pythonDB数据库

    cur = conn.cursor()# 获取游标
    cur.execute("select * from user limit 2")
    resSet = cur.fetchall()
    print u"共%s条数据:" %len(resSet)
    print resSet#元组

    cur.close()
    conn.commit()
    conn.close()
    print u"sql执行成功"
except Exception, e:
    print e

获取游标所在处开始及以下所有的数据,并以元组的形式返回,元组的每一个元素都也是一个由一行数据组成的元组,如果游标所在处没有数据,将返回空元组。执行完这个方法后,游标将移动到数据库表的最后

更新数据
更新单条数据

#conding=utf-8
import MySQLdb
import random
try:
    conn = MySQLdb.connect(
        host = ‘127.0.0.1‘,
        user = ‘root‘,
        passwd = "123456",
        port = 3306)

    conn.select_db(‘python‘)

    cur = conn.cursor()# 获取游标
    #更新一条数据
    update = cur.execute("update user set password = ‘huhongqiang‘ where name=‘tom0‘")
    print u"修改语句受影响额行数:", update#为更新成功的条数
    #查询一条数据
    cur.execute("select * from user where name=‘tom0‘;")
    print cur.fetchone()

    cur.close()
    conn.commit()
    conn.close()
    print u"sql执行成功"
except MySQLdb.Error,e:
print e

批量更新数据

import MySQLdb
import random
try:
    conn = MySQLdb.connect(
        host = ‘127.0.0.1‘,
        user = ‘root‘,
        passwd = "123456",
        port = 3306)

    conn.select_db(‘python‘)# 选择pythonDB数据库

    cur = conn.cursor()# 获取游标
      #批量更新数据

sql = "update user set password = %s where name=%s"
cur.executemany(sql, [(‘345‘, ‘tom1‘), (‘123‘, ‘tom2‘)])
#此处传入一个列表,列表元素是元组
#查看更新后的结果
    query = cur.execute("select *  from user where name in (‘tom1‘,‘tom2‘)")
    print u"表中所有数据:"
    for i in cur.fetchall():
        print i

    cur.close()
    conn.commit()
    conn.close()
    print u"sql执行成功"
except Exception, e:
    print e

原文地址:http://blog.51cto.com/13496943/2150063

时间: 2024-10-09 04:05:33

MySQLdb操作数据库(二)的相关文章

用MySQLdb操作数据库流程示例:

下面的内容直接复制粘贴放到sublime中,保存为******.py文件,然后在python环境下运行即可: '''MySQLdb本身就是python操作mysql数据库的一个插件,python通过MySQLdb实现对数据库的增删改查'''import MySQLdb class MysqlSearch(object): def __init__(self): self.get_conn() '''获取连接''' def get_conn(self): try: self.conn = MySQ

Python之MySQLdb操作数据库

一.python操作数据库 1.格式:大概分为三部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 代码 import MySQLdb conn = MySQLdb.connect(host='192.168.0.180',user='cattle',passwd='cattle',db='cattle') cur = conn.cursor()  #创建连接 reCount = cur.execute('select * from admin') data

MySQLdb操作数据库

堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import paramiko   # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_pol

MySQLdb操作数据库(三)

删除数据删除单条数据 #conding=utf-8 import MySQLdb import random try: conn = MySQLdb.connect( host = '127.0.0.1', user = 'root', passwd = "123456", port = 3306) conn.select_db('python')# 选择pythonDB数据库 cur = conn.cursor()# 获取游标 cur.execute("delete fro

sqlite:多线程操作数据库“database is locked”解决方法(二)

上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大量数据的情况下,延时会拖慢进度. 想出方法二: 1. 创建一个链表,链接如下格式的结构体,线程1,线程2,线程3......不直接改写数据库,而是把sql语句插入链表中: typedef struct { uint8_t *buf; uint32_t len; } sqlItem_t; 2. 创建一个独立的线

adb命令详解(二)——手机缺失sqlite3时操作数据库的多种解决方案

在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 下面我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方案. 1.当手机缺失sqlite3时,如何操作数据库 先来看看手机缺失sqlite3时候的效果图: 这个时候你想操作刚刚编写应用程序中执行的数据库文件内容,显然是执行不了sql语句的.下面我们将介绍三种方法让你可以查看应用程序下的数据库文件: ㈠向手机导入sqlite3文件 ①第一步,下载sqlite

nodejs mysql 操作数据库方法二

node.js 开发指南 – Node.js 连接 MySQL 并进行数据库操作 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何通过NodeJS来操作 MySQL 数据库. Node.js是一套用来编写高性能网络服务器的JavaScript工具包 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何通过NodeJS来操作 M

JSP详细篇——JDBC操作数据库(二)

删除数据 范例: 在查询所有图书信息的页面中,添加删除图书信息的超链接,通过Servlet实现对数据的删除操作 (1)在book_list.jsp中,增加删除图书信息的超链接,将连接的地址指向DeleteServlet. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextP

adb命令具体解释(二)——手机缺失sqlite3时操作数据库的多种解决方式

在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 以下我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方式. 1.当手机缺失sqlite3时,怎样操作数据库 先来看看手机缺失sqlite3时候的效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/7