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 re正则表达式模块(Regular Expression)
Jul 16 Python
简单的Python抓taobao图片爬虫
Oct 26 Python
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Python使用asyncio包处理并发详解
Sep 09 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
如何使用Python 打印各种三角形
Jun 28 Python
django如何自己创建一个中间件
Jul 24 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
python文件操作seek()偏移量,读取指正到指定位置操作
Jul 05 Python
Pytest中conftest.py的用法
Jun 27 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
php 读取文件乱码问题
2010/02/20 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
jQuery之排序组件的深入解析
2013/06/19 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
微信小程序 如何保持登录状态
2019/08/16 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
python解析json实例方法
2013/11/19 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python实例化对象的具体方法
2020/06/17 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
商业房地产广告语
2014/03/13 职场文书
王老吉广告词
2014/03/20 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
人与自然的观后感
2015/06/18 职场文书
毕业证明模板
2015/06/19 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
ant design vue的form表单取值方法
2022/06/01 Vue.js