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 异常处理实例详解
Mar 12 Python
python实现文件名批量替换和内容替换
Mar 20 Python
Unicode和Python的中文处理
Mar 19 Python
Python只用40行代码编写的计算器实例
May 10 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
python计算日期之间的放假日期
Jun 05 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
python3正则模块re的使用方法详解
Feb 11 Python
Python web如何在IIS发布应用过程解析
May 27 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python两个list[]相加的实现方法
Sep 23 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
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
Yii使用技巧大汇总
2015/12/29 PHP
微信支付的开发流程详解
2016/09/13 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
JS中==、===你分清楚了吗
2020/03/04 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
Python Requests库基本用法示例
2018/08/20 Python
在Python中表示一个对象的方法
2019/06/25 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
酒店总经理工作职责
2013/12/13 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
写字楼租赁意向书
2014/07/30 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
个人党性分析材料
2014/12/19 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
golang 实现Location跳转方式
2021/05/02 Golang
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python