python使用sqlite3时游标使用方法


Posted in Python onMarch 13, 2018

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使用webbrowser浏览指定url的方法
Apr 04 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
Python装饰器的执行过程实例分析
Jun 04 Python
Python assert语句的简单使用示例
Jul 28 Python
python多线程与多进程及其区别详解
Aug 08 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
python实现的web监控系统
Apr 27 Python
Python打印输出数组中全部元素
Mar 13 #Python
python实现学生信息管理系统
Apr 05 #Python
python针对excel的操作技巧
Mar 13 #Python
python实现聊天小程序
Mar 13 #Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 #Python
python实现简易通讯录修改版
Mar 13 #Python
python学生信息管理系统
Mar 13 #Python
You might like
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
node中的session的具体使用
2018/09/14 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
如何将python中的List转化成dictionary
2016/08/15 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python文件名和文件路径操作实例
2017/09/29 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
电气工程和自动化自荐信范文
2013/12/25 职场文书
春节超市活动方案
2014/08/14 职场文书
人民的好儿女观后感
2015/06/18 职场文书
英语读书笔记
2015/07/02 职场文书
校园安全学习心得体会
2016/01/18 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
python井字棋游戏实现人机对战
2022/04/28 Python