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遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
python控制台中实现进度条功能
Nov 10 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
解决Django中多条件查询的问题
Jul 18 Python
opencv调整图像亮度对比度的示例代码
Sep 27 Python
python之随机数函数的实现示例
Dec 30 Python
python 将Excel转Word的示例
Mar 02 Python
详解Python flask的前后端交互
Mar 31 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间隔一段时间执行代码的方法
2014/12/02 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php实现搜索类封装示例
2016/03/31 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
python实现横向拼接图片
2020/03/23 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
中科软测试工程师面试题
2012/06/16 面试题
餐厅销售主管职责范本
2014/02/19 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2014年共青团工作总结
2014/12/10 职场文书
南京导游词
2015/02/03 职场文书
销售开票员岗位职责
2015/04/15 职场文书
时尚女魔头观后感
2015/06/04 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
mysql 子查询的使用
2022/04/28 MySQL