python使用sqlite3时游标使用方法
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,'name1')") >>>cu.execute("insert into catalog values(1,'name2')") >>>conn.commit() 选择(select) >>>cu.execute("select * from catalog") >>>cu.fetchall() [(0,'name1'),(1,'name2')] >>>cu.execute("select * from catalog where id = 1") >>>cu.fetchall() [(1,'name2')] 修改(update) >>>cu.execute(“update catalog set name='name2′ where id = 0″) >>> cx.commit() >>> cu.execute(“select * from catalog”) >>> cu.fetchone() (0,‘name2′) 删除(delete) >>>cu.execute(“delete from catalog where id= 1″) >>> cx.commit() >>> cu.execute(“select * from catalog”) >>> cu.fetchall() [(0,'name2')] 连接 为了使用基础数据库系统,首先必须连接到它,这个时候需要使用具有名称的connect函数,该函数有多个参数,而具体用哪个参数取决于数据库。 connect函数的常用参数: connect函数返回连接对象。这个对象表示目前和数据库的会话。连接对象支持的方法如下; 连接对象方法: commit 方法总是可用的,但如果数据库不支持事务,它就没有任何作用。如果关闭了连接但还有未提交的事务,它们会隐式地回滚―但是只有在数据库支持持回滚的时候才可以。 rollback 方法可能不可用,因为不是所有的数据库都支持事务(事务是一系列动作)。如果可用,那么就可以“撤销”所有未提交的事务。 cursor 方法将我们引入另外一个主题:游标对象。通过游标扫行SQL 查询并检查结果。游标连接支持更多的方法,而且可能在程序中更好用。 游标: cu = conn.cursor() 能获得连接的游标,这个游标可以用来执行SQL查询。 conn.commit() 完成插入并且做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到文件中。 游标对象方法: 游标对象特性: cu.fetchone() fetchall()返回结果集中的全部数据,结果为一个tuple的列表。每个tuple元素是按建表的字段顺序排列。注意,游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意。 conn.close() 可以在每次修改数据库后都进行提交,而不是仅仅在准备关闭才提交,准备关闭数据时,使用close 方法。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |