• 用Python进行SQLite数据库操作


    用Python进行SQLite数据库操作

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

    简单的介绍

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

    安装与使用

    1.导入Python SQLITE数据库模块

         Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~

    import sqlite3

    2. 创建/打开数据库 

         在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。

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

    3.数据库连接对象

        打开数据库时返回的对象cx就是一个数据库连接对象,它可以有以下操作:

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

        关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

    4.使用游标查询数据库 

        我们需要使用游标对象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
    复制代码
  • 相关阅读:
    五角星评分小例子
    手风琴案列
    隔行变色
    全选和单选(有一个单选没有打钩,全选也自动不打钩)
    随机数封装
    数组的升降序排列
    js面向对象倒计时与文字左右滚动
    linux知识点总结与随笔(关注linux爱好者公众号的一些笔记)
    线程与进程(我的理解)
    @property在python类中的应用
  • 原文地址:https://www.cnblogs.com/sola-tester/p/4334114.html
Copyright © 2020-2023  润新知