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批量生成本地ip地址的方法
Mar 23 Python
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
python实现随机梯度下降(SGD)
Mar 24 Python
Python中利用xpath解析HTML的方法
May 14 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
Python3.4解释器用法简单示例
Mar 22 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
pow在python中的含义及用法
Jul 11 Python
将python安装信息加入注册表的示例
Nov 20 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
php计算程序运行时间的简单例子分享
2014/05/10 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
JS的get和set使用示例
2014/02/20 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
require.js的用法详解
2015/10/20 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
Django处理文件上传File Uploads的实例
2018/05/28 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
override和overload的区别
2016/03/09 面试题
分层教学实施方案
2014/03/19 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
新教师教学工作总结
2015/08/12 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python