用Python进行SQLite数据库操做

用Python进行SQLite数据库操做

 -----转自:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html

 

简单的介绍html

      SQLite数据库是一款很是小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,全部的维护都来自于程序自己。它是遵照ACID的关联式数据库管理系统,它的设计目标是嵌入式的,并且目前已经在不少嵌入式产品中使用了它,它占用资源很是的低,在嵌入式设备中,可能只须要几百K的内存就够了。它可以支持Windows/Linux/Unix等等主流的操做系统,同时可以跟不少程序语言相结合,好比 Tcl、C#、PHP、Java等,还有ODBC接口,一样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来说,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。sql

 

安装与使用数据库

 

 

1.导入 Python SQLITE数据库模块

     Python2.5以后,内置了SQLite3,成为了内置模块,这给咱们省了安装的功夫,只需导入便可~函数

import sqlite3

 

2. 建立/打开数据库 post

     在调用connect函数的时候,指定库名称,若是指定的数据库存在就直接打开这个数据库,若是不存在就新建立一个再打开。字体

cx = sqlite3.connect("E:/test.db")
     也能够建立数据库在内存中。
con = sqlite3.connect(":memory:")

 

3.数据库链接对象fetch

    打开数据库时返回的对象cx就是一个数据库链接对象,它能够有如下操做:this

  1. commit()--事务提交   
  2. rollback()--事务回滚   
  3. close()--关闭一个数据库链接   
  4. cursor()--建立一个游标

    关于commit(),若是isolation_level隔离级别默认,那么每次对数据库的操做,都须要使用该命令,你也能够设置isolation_level=None,这样就变为自动提交模式。编码

 

4.使用游标查询数据库 url

    咱们须要使用游标对象SQL语句查询数据库,得到查询对象。 经过如下方法来定义一个游标。

cu=cx.cursor()

 

     游标对象有如下的操做:
  1. execute()--执行sql语句   
  2. executemany--执行多条sql语句   
  3. close()--关闭游标   
  4. fetchone()--从结果中取一条记录,并将游标指向下一条记录   
  5. fetchmany()--从结果中取多条记录   
  6. fetchall()--从结果中取出全部记录   
  7. scroll()--游标滚动  

1. 建表

cu.execute("create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)")

 

上面语句建立了一个叫catalog的表,它有一个主键id,一个pid,和一个name,name是不能够重复的,以及一个nickname默认为NULL。

 

2. 插入数据 

请注意避免如下写法:

# Never do this -- insecure 会致使注入攻击

pid=200
c.execute("... where pid = '%s'" % pid)
正确的作法以下,若是t只是单个数值,也要采用t=(n,)的形式,由于元组是不可变的。 
for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:
    cx.execute("insert into catalog values (?,?,?,?)", t)
简单的插入两行数据,不过须要提醒的是,只有提交了以后,才能生效.咱们使用数据库链接对象cx来进行提交commit和回滚rollback操做.
cx.commit()

 

 

3.查询

cu.execute("select * from catalog") 

要提取查询到的数据,使用游标的fetch函数,如:

In [10]: cu.fetchall()
Out[10]: [(0, 10, u'abc', u'Yu'), (1, 20, u'cba', u'Xu')]

若是咱们使用cu.fetchone(),则首先返回列表中的第一项,再次使用,则返回第二项,依次下去.

 

4.修改

In [12]: cu.execute("update catalog set name='Boy' where id = 0")
In [13]: cx.commit()

注意,修改数据之后提交

 

5.删除

cu.execute("delete from catalog where id = 1")  
cx.commit() 

 

6.使用中文

请先肯定你的IDE或者系统默认编码是utf-8,而且在中文前加上u 

x=u'鱼'
cu.execute("update catalog set name=? where id = 0",x)
cu.execute("select * from catalog")
cu.fetchall()
[(0, 10, u'\u9c7c', u'Yu'), (1, 20, u'cba', u'Xu')]

若是要显示出中文字体,那须要依次打印出每一个字符串

复制代码
In [26]: for item in cu.fetchall():
   ....:     for element in item:
   ....:         print element,
   ....:     print
   ....: 
0 10 鱼 Yu
1 20 cba Xu
复制代码
相关文章
相关标签/搜索