在python操做数据库中游标的使用方法

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

数据库支持sql

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

SQLite 和PySQLiteapi

sqlite是很是著名的开源嵌入式数据库软件,它能够嵌入到其余程序中使用,而且提供SQL接口用来查询,很是方便。它的官方站点为http://www.sqlite.org。函数

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

在python2.5版本这后,SQLite的优点在于它的一个包装(PySQLite)已经被包括在标准库内,因此咱们能够直接使用。fetch

入门操做code

能够将SQLite做为名为sqlite3的模块导入。以后就能够建立一个到数据库文件的链接----若是文件不存在就会被建立----经过提供一个文件名:sqlite

>>> 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 方法。

相关文章
相关标签/搜索