详解在python操作数据库中游标的使用方法


Posted in Python onNovember 12, 2019

cursor就是一个Cursor对象,这个cursor是一个实现了迭代器(def__iter__())和生成器(yield)的MySQLdb对象,这个时候cursor中还没有数据,只有等到fetchone()或fetchall()的时候才返回一个元组tuple,才支持len()和index()操作,这也是它是迭代器的原因。但同时为什么说它是生成器呢?因为cursor只能用一次,即每用完一次之后记录其位置,等到下次再取的时候是从游标处再取而不是从头再来,而且fetch完所有的数据之后,这个cursor将不再有使用价值了,即不再能fetch到数据了。

数据库支持

使用简单的纯文本只能实现有退限的功能,所需要引入数据库,完成更强大的功能,本节使用的简单数据库SQLite 。

SQLite 和PySQLite

sqlite是非常著名的开源嵌入式数据库软件,它可以嵌入到其他程序中使用,并且提供SQL接口用来查询,非常方便。它的官方站点为http://www.sqlite.org。

而pysqlite 则是一个sqlite 为 python 提供的 api 接口,它让一切对于 sqlite 的操作都变得异常简单

在python2.5版本这后,SQLite的优势在于它的一个包装(PySQLite)已经被包括在标准库内,所以我们可以直接使用。

入门操作

可以将SQLite作为名为sqlite3的模块导入。之后就可以创建一个到数据库文件的连接----如果文件不存在就会被创建----通过提供一个文件名:

>>> import sqlite3
>>> conn= sqlite3.connect('somedatabase.db') # 创建数据库
>>>cu =conn.cursor() #能获得连接的游标
#创建数据表
>>>cu.execute("""create table catalog (
 id integer primary key,
 pid integer,
 name varchar(10) UNIQUE
 )""")
#插入两条数据
>>>cu.execute("insert into catalog values(0,0,'name1')")
>>>cu.execute("insert into catalog values(1,0,'name2')")
>>>conn.commit()
#选择(select)
>>>cu.execute("select * from catalog")
>>>cu.fetchall() 
[(0, 0, 'name1'), (1, 0, 'name2')]
>>>cu.execute("select * from catalog where id = 1")
>>>cu.fetchall()
[(1, 0, 'name2')]
#修改(update)
>>>cu.execute(“update catalog set name='name2′ where id = 0″)
>>> cx.commit()
>>> cu.execute(“select * from catalog”)
>>> cu.fetchone()
(0, 0, ‘name2′)
#删除(delete)
>>>cu.execute(“delete from catalog where id= 1″)
>>> cx.commit()
>>> cu.execute(“select * from catalog”)
>>> cu.fetchall()
[(0, 0, 'name2')]

连接

为了使用基础数据库系统,首先必须连接到它,这个时候需要使用具有名称的connect函数,该函数有多个参数,而具体用哪个参数取决于数据库。

connect函数的常用参数:

connect函数返回连接对象。这个对象表示目前和数据库的会话。连接对象支持的方法如下;

连接对象方法:

commit 方法总是可用的,但如果数据库不支持事务,它就没有任何作用。如果关闭了连接但还有未提交的事务,它们会隐式地回滚---但是只有在数据库支持持回滚的时候才可以。

rollback 方法可能不可用,因为不是所有的数据库都支持事务(事务是一系列动作)。如果可用,那么就可以“撤销”所有未提交的事务。

cursor 方法将我们引入另外一个主题:游标对象。通过游标扫行SQL 查询并检查结果。游标连接支持更多的方法,而且可能在程序中更好用。

游标:

cu = conn.cursor()

能获得连接的游标,这个游标可以用来执行SQL查询。

conn.commit()

完成插入并且做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到文件中。

游标对象方法:

游标对象特性:

cu.fetchone()

fetchall()返回结果集中的全部数据,结果为一个tuple的列表。每个tuple元素是按建表的字段顺序排列。注意,游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意。

conn.close()

可以在每次修改数据库后都进行提交,而不是仅仅在准备关闭才提交,准备关闭数据时,使用close 方法。

总结

以上所述是小编给大家介绍的在python操作数据库中游标的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python的类变量和成员变量用法实例教程
Aug 25 Python
Python文件和目录操作详解
Feb 08 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
python 自动去除空行的实例
Jul 24 Python
如何使用Python自动控制windows桌面
Jul 11 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
Python列表切片常用操作实例解析
Dec 16 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
如何分离django中的媒体、静态文件和网页
Nov 12 #Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 #Python
Python实现元素等待代码实例
Nov 11 #Python
如何基于python生成list的所有的子集
Nov 11 #Python
使用django和vue进行数据交互的方法步骤
Nov 11 #Python
如何使用python进行pdf文件分割
Nov 11 #Python
python实发邮件实例详解
Nov 11 #Python
You might like
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
jquery随意添加移除html的实现代码
2011/06/21 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
Python使用requests提交HTTP表单的方法
2018/12/26 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
高一生物教学反思
2014/01/17 职场文书
最新创业融资计划书
2014/01/19 职场文书
青春励志演讲稿
2014/04/29 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
社区干部培训心得体会
2016/01/06 职场文书
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python