Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】


Posted in Python onJuly 11, 2017

本文实例讲述了Python操作SQLite数据库的方法。分享给大家供大家参考,具体如下:

SQLite简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起MySQL、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

SQLite数据库的使用

1.导入Python SQLite数据库模块

python2.5版本以后内置SQLite数据库

import sqlite3

2. 创建/打开数据库

调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开

conn = sqlite3.connect("E:/test.db")

或者也可以在内存中创建

conn = sqlite3.connect(":memory:")

3.数据库连接对象

打开数据库时返回的对象conn就是一个数据库连接对象,它可以有以下操作:

commit()--事务提交
rollback()--事务回滚
close()--关闭一个数据库连接
cursor()--创建一个游标

关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

4.使用游标查询数据库

我们需要使用游标对象SQL语句查询数据库,获得查询对象。 通过以下方法来定义一个游标。

cu=conn.cursor()

游标对象有以下的操作:

execute()--执行sql语句
executemany--执行多条sql语句
close()--关闭游标
fetchone()--从结果中取一条记录,并将游标指向下一条记录
fetchmany()--从结果中取多条记录
fetchall()--从结果中取出所有记录
scroll()--游标滚动

SQLite数据库操作

1. 创建数据库表

cu.execute("create table user (id integer primary key,name varchar(20) UNIQUE,age integer,comment text NULL)")
# 创建一张user表,表中有id(主键),名字(唯一),年龄,备注(默认为空)

2. 插入数据

请注意避免以下写法:

# 这样写会导致注入攻击
pid=200
c.execute("... where id= '%s'" % id)

正确的做法如下,如果t只是单个数值,也要采用t=(n,)的形式,因为元组是不可变的。

for user in[(0,'aaa',111,'aaaa'),(1,'bbb',222,'bbbb')]:
 conn.execute("insert into user values (?,?,?,?)", user) # 注意user是元组,不可变
conn.commit() # 注意插入操作之后要进行提交

3. 查询数据

cu.execute("select * from user")
cu.fetchone() # 得到游标的第一个值
cu.execute("select * from user")
cu.fetchall() # 使用游标的fetch函数,fetchall得到所有的查询记录

4. 修改数据

cu.execute("update user set name='ccc' where id = 0")
conn.commit()

5. 删除数据

cu.execute("delete from user where id = 1")
conn.commit()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python入门篇之字符串
Oct 17 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
Python打包可执行文件的方法详解
Sep 19 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
基于python监控程序是否关闭
Jan 14 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
python openpyxl模块的使用详解
Feb 25 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 Python
python处理按钮消息的实例详解
Jul 11 #Python
python 创建弹出式菜单的实现代码
Jul 11 #Python
在Python中使用AOP实现Redis缓存示例
Jul 11 #Python
浅谈python import引入不同路径下的模块
Jul 11 #Python
python 环境变量和import模块导入方法(详解)
Jul 11 #Python
Python编写登陆接口的方法
Jul 10 #Python
CentOS中升级Python版本的方法详解
Jul 10 #Python
You might like
Mysql的常用命令
2006/10/09 PHP
PHP个人网站架设连环讲(三)
2006/10/09 PHP
PHP4实际应用经验篇(1)
2006/10/09 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
四年级科学教学反思
2014/02/10 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
科学发展观活动总结
2014/08/28 职场文书
党员活动总结
2015/02/04 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
公司费用报销管理制度
2015/08/04 职场文书
MySQL的join buffer原理
2021/04/29 MySQL
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle
python数字图像处理:图像的绘制
2022/06/28 Python