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 中文字符串的处理实现代码
Oct 25 Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
Python批量修改文本文件内容的方法
Apr 29 Python
Python实现的双色球生成功能示例
Dec 18 Python
tensorflow实现简单的卷积神经网络
May 24 Python
python实现简易数码时钟
Feb 19 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Python实现语音识别和语音合成功能
Sep 20 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
python中的 zip函数详解及用法举例
Feb 16 Python
Python3基于plotly模块保存图片表格
Aug 03 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获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
JS验证码实现代码
2017/09/14 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
python实现飞机大战游戏
2020/10/26 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
HTML的form表单和django的form表单
2019/07/25 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
Django websocket原理及功能实现代码
2020/11/14 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
大连导游词
2015/02/12 职场文书
用人单位聘用意向书
2015/05/11 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python