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 10 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
centos6.7安装python2.7.11的具体方法
Jan 16 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
May 18 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
Python趣味挑战之实现简易版音乐播放器
May 28 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Pyhton中防止SQL注入的方法
2015/02/05 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
理论讲解python多进程并发编程
2018/02/09 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
python实现微信自动回复功能
2018/04/11 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
简单了解Django ContentType内置组件
2019/07/23 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
几个常见的软件测试问题
2016/09/07 面试题
生物专业个人自荐信范文
2013/11/29 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
大学生评语大全
2014/04/18 职场文书
2014年信访工作总结
2014/11/17 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB