sqlite
python中内置的sqlite数据库学习笔记
简介:SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
1.建表与数据注入
imort sqlite3
#指定调用的数据库,若没有,则会新建一个
databese=sqlite3.connect('./test.db')
#建立游标
cu=database.cursor()
#建表 使用cu和database效果都是一样,共有四个键id,pid,name,nickname
cu.execute('create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)')
#插入数据
for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:
cx.execute("insert into catalog values (?,?,?,?)", t)
#只有提交才会生效
cx.commit()
2.数据库databese操作方法
打开数据库时返回的对象cx就是一个数据库连接对象,它可以有以下操作:
commit()--事务提交
rollback()--事务回滚
close()--关闭一个数据库连接
cursor()--创建一个游标
关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。
3.游标操作方法
游标对象有以下的操作:
execute()--执行sql语句
executemany--执行多条sql语句
close()--关闭游标
fetchone()--从结果中取一条记录,并将游标指向下一条记录
fetchmany()--从结果中取多条记录
fetchall()--从结果中取出所有记录
scroll()--游标滚动
3.查血、修改、删除
#必须由cursor对象先指定该语句
cu.execute('select * from catalog')
cu.fetchall()
#修改cu或database均可以
cu.execute("update catalog set name='boy' where id=0")
cu.commit()
#删除
cu.execute("delete from catalog where id = 1")
cx.commit()
#使用中文
x=u'鱼'
cu.execute("update catalog set name=? where id = 0",x)
cu.execute("select * from catalog")
cu.fetchall()
4.ROW对象
In [30]: cx.row_factory = sqlite3.Row
In [31]: c = cx.cursor()
In [32]: c.execute('select * from catalog')
Out[32]: <sqlite3.Cursor object at 0x05666680>
In [33]: r = c.fetchone()
In [34]: type(r)
Out[34]: <type 'sqlite3.Row'>
In [35]: r
Out[35]: <sqlite3.Row object at 0x05348980>
In [36]: print r
(0, 10, u'\u9c7c', u'Yu')
In [37]: len(r)
Out[37]: 4
In [39]: r[2] #使用索引查询
Out[39]: u'\u9c7c'
In [41]: r.keys()
Out[41]: ['id', 'pid', 'name', 'nickname']
In [42]: for e in r:
....: print e,
....:
0 10 鱼 Yu
#使用列的关键词查询
In [43]: r['id']
Out[43]: 0
In [44]: r['name']