Python操作Sqlite正确实现方法解析


Posted in Python onFebruary 05, 2020

Python编程语言的优点非常多,它的编程特色主要体现在可扩充性方面。那么,在接下来的这篇文章中,我们将会为大家详细介绍一下有关Python操作Sqlite 的相关应用技巧,希望可以给大家带来些帮助。

一、安装

去PySqlite主页上下载安装包,有windows的版本,现支持 Python 2.3和2.5版本。

二、创建数据库/打开数据库

Python操作Sqlite使用文件作为数据库,你可以指定数据库文件的位置。

>>> import sqlite3

>>> cx = sqlite.connect("d:/test.db", encoding='cp936')

使 用sqlite的connect可以创建一个数据库文件,上面我指明了路径。当数据库文件不存在的时候,它会自动创建。如果已经存在这个文件,则打开这个 文件。encoding指明保存数据所使用的编码,这里cp936是 Python 中自带的编码,其实就是GBK编码。cx为数据库连接对象。

三、操作数据库的基本对象

3.1 数据库连接对象

象前面的cx就是一个数据库的连接对象,它可以有以下操作:

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

3.2 游标对象

所有sql语句的执行都要在游标对象下进行。

cu = cx.cursor()这样定义了一个游标。游标对象有以下的操作:
execute()--执行sql语句
executemany--执行多条sql语句
close()--关闭游标
fetchone()--从结果中取一条记录
fetchmany()--从结果中取多条记录
fetchall()--从结果中取出多条记录
scroll()--游标滚动

关于对象的方法可以去 Python 主页上查看DB API的详细文档。不过PySqlite?到底支持DB API到什么程序,我就不知道了。我列出的操作都是支持的,不过我不是都使用过。

四、使用举例

4.1 建库

前面已经有了,不再重复。(这些例子,如果你有兴趣,可以直接在Python的交互环境下试试)

4.2 建表

>>> cu=cx.cursor() >>> cu.execute("""create table catalog
( id integer primary key, pid integer, name varchar(10) UNIQUE )""")

上面语句创建了一个叫catalog的表,它有一个主键id,一个pid,和一个name,name是不可以重复的。

关于Python操作Sqlite支持的数据类型,在它主页上面的文档中有描述,可以参考:Version 2 DataTypes?

4.3 insert(插入)

>>> cu.execute("insert into catalog values(0, 0, 'name1')")
>>> cu.execute("insert into catalog values(1, 0, 'hello')") >>> cx.commit()

如果你愿意,你可以一直使用cu游标对象。注意,对数据的修改必须要使用事务语句:commit()或rollback(),且对象是数据库连接对象,这里为cx。

4.4 select(选择)

>>> cu.execute("select * from catalog") >>> cu.fetchall()
[(0, 0, 'name2'), (1, 0, 'hello')]fetchall()

返回结果集中的全部数据,结果为一个tuple的列表。每个tuple元素是按建表的字段顺序排列。注意,游标是有状态的,它可以记录当前已经取到结果的 第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意。

>>> cu.execute("select * from catalog where id = 1")
>>> cu.fetchone() (1, 0, 'hello')

对数据库没有修改的语句,执行后不需要再执行事务语句。

4.5 update(修改)

>>> cu.execute("update catalog set name='name2' where id = 0")
>>> cx.commit() >>> cu.execute("select * from catalog")
>>> cu.fetchone() (0, 0, 'name2')4.6 delete(删除)
>>> cu.execute("delete from catalog where id = 1") >>> cx.commit()
>>> cu.execute("select * from catalog") >>> cu.fetchall() [(0, 0, 'name2')]

以上是关于如何使用Python操作Sqlite的简单示例。

Python 相关文章推荐
python高并发异步服务器核心库forkcore使用方法
Nov 26 Python
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
如何利用python生成MD5并去重
Dec 07 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 #Python
Tensorflow累加的实现案例
Feb 05 #Python
详谈tensorflow gfile文件的用法
Feb 05 #Python
TensorFlow实现从txt文件读取数据
Feb 05 #Python
TensorFlow 读取CSV数据的实例
Feb 05 #Python
Python tkinter和exe打包的方法
Feb 05 #Python
tensorflow对图像进行拼接的例子
Feb 05 #Python
You might like
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python snownlp情感分析简易demo(分享)
2017/06/04 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
python实现简单图书管理系统
2019/11/22 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
Python递归实现打印多重列表代码
2020/02/27 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
医学生自我评价
2014/01/27 职场文书
新年爱情寄语
2014/04/08 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
AJAX学习笔记
2021/05/18 Javascript
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
Java如何实现树的同构?
2021/06/22 Java/Android