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中的私有属性
Aug 21 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Python3中exp()函数用法分析
Feb 19 Python
记录Python脚本的运行日志的方法
Jun 05 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
python读取ini配置的类封装代码实例
Jan 08 Python
pytorch 模拟关系拟合——回归实例
Jan 14 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/03/10 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
不同浏览器的怪癖小结
2010/07/11 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
python简单判断序列是否为空的方法
2015/06/30 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
python实现八大排序算法(1)
2017/09/14 Python
Python import与from import使用及区别介绍
2018/09/06 Python
Python中安装easy_install的方法
2018/11/18 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
浅谈Python type的使用
2019/11/19 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
医院实习接收函
2014/01/12 职场文书
档案接收函
2014/01/13 职场文书
房地产项目策划书
2014/02/05 职场文书
教育技术职业规划范文
2014/03/04 职场文书
马智宇结婚主持词
2014/04/01 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
2014年标准化工作总结
2014/12/17 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
家长学校教学计划
2015/01/19 职场文书
2015公司年度工作总结
2015/05/14 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python