游标(cursor)
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由python进一步处理,一组主变量一次只能存放一条记录
仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求
1.1.游标和游标的优点
在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。
常用方法:
cursor():创建游标对象
close():关闭此游标对象
fetchone():得到结果集的下一行
fetchmany([size = cursor.arraysize]):得到结果集的下几行
fetchall():得到结果集中剩下的所有行
excute(sql[, args]):执行一个数据库查询或命令
executemany (sql, args):执行多个数据库查询或命令
下面我们来看一个例子:
点击(此处)折叠或打开
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # Author :Alvin.xie
- # @Time :2017-11-21 16:43
- # @file :youbiao.py
- import MySQLdb
- def connect_mysql():
- db_config = {
- "host": "10.89.1.10",
- "port": 3306,
- "user": "demo",
- "passwd": "123qaz",
- "db": "python",
- "charset": "utf8"
- }
- try:
- cnx = MySQLdb.connect(**db_config)
- except Exception as e:
- raise e
- return cnx
- if __name__ == '__main__':
- cnx = connect_mysql()
- cus = cnx.cursor()
- sql = '''select * from tmp;'''
- try:
- cus.execute(sql)
- result1 = cus.fetchone()
- print('result1:')
- print(result1)
- result2 = cus.fetchmany(1)
- print('result2:')
- print(result2)
- result3 = cus.fetchall()
- print('result3:')
- print(result3)
- cus.close()
- cnx.commit()
- except Exception as e:
- cnx.rollback()
- print('error')
- raise e
- finally:
- cnx.close()
解释:
1,先通过MySQLdb.connect(**db_config)建立mysql连接对象
2,在通过 = cnx.cursor()创建游标
3,fetchone():在最终搜索的数据中去一条数据
4,fetchmany(1)在接下来的数据中在去1行的数据,这个数字可以自定义,定义多少就是在结果集中取多少条数据。
5,fetchall()是在所有的结果中搞出来所有的数据。