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益智游戏计算汉诺塔问题示例
Mar 05 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
浅谈python中requests模块导入的问题
May 18 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
Python简单I/O操作示例
Mar 18 Python
创建Django项目图文实例详解
Jun 06 Python
pytorch多GPU并行运算的实现
Sep 27 Python
使用python实现飞机大战游戏
Mar 23 Python
python相对企业语言优势在哪
Jun 12 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
Python图片检索之以图搜图
May 31 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
js 设置选中行的样式的实现代码
2010/05/24 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
js精度溢出解决方案
2012/12/02 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
python多线程扫描端口(线程池)
2019/09/04 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
网上祭先烈心得体会
2014/09/01 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
教师党员自我评价2015
2015/03/04 职场文书
看上去很美观后感
2015/06/10 职场文书
初中同学会致辞
2015/08/01 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers