• 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']
    
  • 相关阅读:
    objective-C 自定义对象归档的实现
    D3D游戏编程系列(一):DXLib的介绍
    再谈 retain,copy,mutableCopy(官方SDK,声明NSString都用copy非retain)
    uva 11292 Dragon of Loowater (勇者斗恶龙)
    【iOS开发】iOS7 兼容及部分细节
    QMenu的个性化定制
    基于Token的WEB后台认证机制
    Lua简易入门教程
    char,short ,int ,long,long long,unsigned long long数据范围
    用Kibana和logstash快速搭建实时日志查询、收集与分析系统
  • 原文地址:https://www.cnblogs.com/yangjing000/p/10185396.html
Copyright © 2020-2023  润新知