python进阶学习(三)
本节通过SQLite了解数据库操作
-------------------------
数据库支持
使用简单的纯文本只能实现有退限的功能,所需要引入数据库,完成更强大的功能,本节使用的简单数据库SQLite 。
SQLite 和PySQLite
sqlite是非常著名的开源嵌入式数据库软件,它可以嵌入到其他程序中使用,并且提供SQL接口用来查询,非常方便。它的官方站点为http://www.sqlite.org。
而pysqlite 则是一个 sqlite 为 python 提供的 api 接口,它让一切对于 sqlite 的操作都变得异常简单
在python2.5版本这后,SQLite的优势在于它的一个包装(PySQLite)已经被包括在标准库内,所以我们可以直接使用。
入门操作
可以将SQLite作为名为sqlite3的模块导入。之后就可以创建一个到数据库文件的连接----如果文件不存在就会被创建----通过提供一个文件名:
>>> 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 方法。
---------------
参考:
pysqlite 简明教程:http://blog.donews.com/limodou/archive/2004/07/05/37895.aspx
SQLite转码问题:http://blog.sina.com.cn/s/blog_68013e850100w66d.html
python进阶学习(三)的更多相关文章
- python进阶学习三——第四天
一. iter&yield迭代器 1.1 iter names = iter(['zeng', 'chun', 'yun']) print(names) print(names.__next_ ...
- Python进阶学习之特殊方法实例详析
Python进阶学习之特殊方法实例详析 最近在学习python,学习到了一个之前没接触过的--特殊方法. 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init_ ...
- Python基础学习三
Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...
- python进阶学习笔记(一)
python进阶部分要学习的内容: 学习目标: 1.函数式编程 1.1,什么是函数式编程 函数式编程是一种抽象计算的编程模式 不同语言的抽象层次不同: 函数式编程的特点: python支持的函数式编程 ...
- 魔法方法推开Python进阶学习大门
热爱Python Python是Guido van Rossum设计出来的让使用者觉得如沐春风的一门编程语言.2020年11月12日,64岁的Python之父宣布由于退休生活太无聊,自己决定加入Mic ...
- python进阶学习笔记(三)
3.类的继承 3.1,python中什么是类的继承 答案是肯定的. 也就是说,如果一个实例是一个子类,那么它也是一个父类 总是从某各类继承,如果没有合适的类,就要从object类继承:super(). ...
- Python进阶 学习笔记(三)
(涉及内容:定制类) __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__( ...
- Python进阶学习_连接操作Redis数据库
安装导入第三方模块Redis pip3 install redis import redis 操作String类型 """ redis 基本命令 String set(n ...
- [python]进阶学习之阅读代码
起因 最近在公司的任务是写一些简单的运营工具,因为是很小的工具,所以就用了github上面的一个开源项目flask-admin,可以省去很多的事情. 但是,这个开源项目是个人维护的项目,所以文档相对简 ...
随机推荐
- 一次浴火重生的MySQL优化(EXPLAIN命令详解)
一直对SQL优化的技能心存无限的向往,之前面试的时候有很多面试官都会来一句,你会优化吗?我说我不太会,这时可能很多人就会有点儿说法了,比如会说不要使用通配符*去检索表.给常常使用的列建立索引.还有创建 ...
- java笔录---反射机制(1)
引言 为了方便记忆java的反射机制,在这里仔细的总结了一下.主要是怕以后忘记了,这样也方便回忆.因为最近利用空余时间深入的了解spring和Mybatis框架, 像spring中核心模块IO ...
- 刚装的系统C盘占空间特别大怎么办?关闭win7的系统还原和调整虚拟内存
刚装的win7系统,C盘占空间特别大,清理垃圾,清理碎片之后还是特别大,检查一下,系统才20G,C盘却占用了40G,其实是没有关闭系统还原,再就是没有调整虚拟内存.win7旗舰版(其他版本也可能这样, ...
- Xamarin.Forms(二) 返回页面的数据刷新
这几天在做一个课程表的小程序,遇到了这样一个问题: app打开便是课程表的页面,如果课程表页面没有数据的话需要跳转到同步课表页面模拟登陆教务管理系统获取课表,并显示在课程表页面,这样就需要从同步课表页 ...
- 将SpringMVC中的HttpMessageConverter替换为Gson
读者们看到这个标题也许会感到奇怪,SpringMVC中默认的HttpMessageConverter不是Jackson吗,但是我在使用的过程中发现Jackson并不好用,如果有一些复杂的嵌套类型,当然 ...
- 关于个人编辑器sublime text3使用指南
用过了好多编辑器,前些年用的zend studio,phpstorm近两年转为nodepad++(因为写的语言种类比较多了,shell,python,php,前端等),相对于nodepad++, s ...
- 一个UITableViewCell的简单动画效果
实现下面UITableViewDelegate的方法: forRowAtIndexPath:(NSIndexPath *)indexPath{ CATransform3D rotation; rota ...
- 转载的log4cplus使用指南
以下转载的log4cplus使用指南的版本可能不是最新,仅作参考了解.应以最新安装包中的示例代码为准. 目 录1 Log4cplus简介 52 安装方法 53 主要类说明 64 ...
- zabbix 3.2.7 (源码包)安装部署
Zabbix 3.2.7 + CentOS7 安装 环境准备: 操作系统 CentOS Linux release 7.2.1511 (Core) zabbix server 10.30.94.60 ...
- instanceof问题
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...