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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
python实现求特征选择的信息增益
Dec 18 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
python文件读取失败怎么处理
Jun 23 Python
pytorch 如何使用float64训练
May 24 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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/10/09 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
python实现爬取千万淘宝商品的方法
2015/06/30 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
python抓取网页中链接的静态图片
2018/01/29 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Python 的AES加密与解密实现
2019/07/09 Python
python中自带的三个装饰器的实现
2019/11/08 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
医学毕业生自我鉴定
2013/10/30 职场文书
技术总监管理职责范本
2014/03/06 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
python b站视频下载的五种版本
2021/05/27 Python
Python中glob库实现文件名的匹配
2021/06/18 Python
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL