Python操作SQLite简明教程


Posted in Python onJuly 10, 2014

一、SQLite简介

SQLite是一个包含在C库中的轻量级数据库。它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库。一些应用可是使用SQLite保存内部数据。它也可以在构建应用原型的时候使用,以便于以后转移到更大型的数据库,比如PostgreSQL或者Oracle。

sqlite3模块由Gerhard Häring编写,提供了一个SQL接口,这个接口的设计遵循了由PEP 249描述的DB-API 2.0说明书。

二、创建并打开数据库

为了使用这个模块,必须先创建一个连接(Connection)对象来代表数据库。在以下的例子中,数据将会被保存在 example.db 文件中:

import sqlite3

conn = sqlite3.connect('example.db')

如果指定的数据库存在,就会直接打开这个数据库,否则将新建一再打开。
也可以提供专用名 :memory: 来在内存中建立数据库。

三、数据库连接对象

一旦拥有了连接(Connection)对象,就可以创建游标(Cursor)对象并调用他的execute()方法来执行SQL语句:

c = conn.cursor()

 

 # Create table 

 c.execute('''CREATE TABLE stocks              

     (date text, trans text, symbol text, qty real, price real)''')

 

 # Insert a row of data 

 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

 

 # Save (commit) the changes 

 conn.commit()

 

 # We can also close the connection if we are done with it. 

 # Just be sure any changes have been committed or they will be lost. 

 conn.close()

 

保存后的数据是持久的,并且可以在以后的访问中可用。

四、增删改查

1.建(create)表

c.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.删除表(DROP),清空表(TRUNCATE)

c.execute("drop table catalog")

上面语句将catalog表删除。

另外SQLite中没有清空表的操作,使用如下方式替代:

c.execute("delete from catalog")

3.插入(insert)数据,更改(uptate)数据

通常SQL语句中会用到python变量作为值(value)。不建议直接使用python的字符串运算来构造查询语句,因为这样是不安全的,会使你的程序容易受到SQL注入攻击。

可以使用DB-API提供的参数代换。在想使用值(value)的地方放置一个'?'作为占位符,然后提供一个由值(value)组成的元组作为游标(cursor)中execute()方法的第二个参数。(其他的数据库模块可能使用别的占位符,比如 '%s' 或者 ':1')

# Larger example that inserts many records at a time

purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),

('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),

('2006-04-06', 'SELL', 'IBM', 500, 53.00),

]

c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
c.execute("UPDATE catalog SET trans='SELL' WHERE symbol = 'IBM'")

4.查询(select)数据

正如前面所说,提倡使用元组进行操作。

# Never do this -- insecure!

symbol = 'RHAT'

c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
# Do this instead

t = ('RHAT',)

c.execute('SELECT * FROM stocks WHERE symbol=?', t)

print c.fetchone()

5.删除(delete)数据

t=('RHAT')

c.execute("DELETE * FROM stocks WHERE symbol=?", t)
Python 相关文章推荐
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
Python实现控制台进度条功能
Jan 04 Python
python3+PyQt5实现柱状图
Apr 24 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
python实现kmp算法的实例代码
Apr 03 Python
python已协程方式处理任务实现过程
Dec 27 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
如何用python反转图片,视频
Apr 24 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 Python
Python读取图片EXIF信息类库介绍和使用实例
Jul 10 #Python
Python采集腾讯新闻实例
Jul 10 #Python
使用wxpython实现的一个简单图片浏览器实例
Jul 10 #Python
Python语言的12个基础知识点小结
Jul 10 #Python
使用Python获取Linux系统的各种信息
Jul 10 #Python
Django中实现一个高性能计数器(Counter)实例
Jul 09 #Python
python实现的登录和操作开心网脚本分享
Jul 09 #Python
You might like
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
github配置使用指南
2014/11/18 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
python中Apriori算法实现讲解
2017/12/10 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python连接Redis的基本配置方法
2018/09/13 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
python中id函数运行方式
2020/07/03 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
Servlet的生命周期
2013/08/25 面试题
数控专业毕业生求职信范文
2013/09/21 职场文书
教师师德承诺书
2014/03/26 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
泰坦尼克号观后感
2015/06/04 职场文书