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分析网页上所有超链接的方法
May 08 Python
python实用代码片段收集贴
Jun 03 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
Django框架自定义session处理操作示例
May 27 Python
Flask框架模板继承实现方法分析
Jul 31 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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
global.php
2006/12/09 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
使用Python对Access读写操作
2017/03/30 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
python 写一个文件分发小程序
2020/12/05 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
争先创优个人总结
2015/03/04 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书