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去除文件中空格、Tab及回车的方法
Apr 12 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
Python工厂函数用法实例分析
May 14 Python
python定时关机小脚本
Jun 20 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
Python实现的扫码工具居然这么好用!
Jun 07 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
PHP4之真OO
2006/10/09 PHP
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
Python实现Linux中的du命令
2017/06/12 Python
matplotlib绘制动画代码示例
2018/01/02 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
小学体育教学反思
2014/01/31 职场文书
《钱学森》听课反思
2014/03/01 职场文书
学生安全责任书
2014/04/15 职场文书
2015年新教师工作总结
2015/04/28 职场文书
cf战队宣传语
2015/07/13 职场文书
开学第一周总结
2015/07/16 职场文书
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python