文档章节

Python 操作 SQLite 数据库

SEOwhywhy
 SEOwhywhy
发布于 2018/12/07 13:16
字数 1127
阅读 13
收藏 2

  写在之前
  
  SQLite 是一个小型的关系型数据库,它最大的特点在于不需要单独的服务、零配置。我们在之前讲过的两个数据库,不管是 MySQL 还是 MongoDB,都需要我们安装。安装之后,然后运行起来,其实这就相当于已经有一个相应的服务在跑着。
  
  SQLite 与前面所说的两个数据库不同。首先Python 已经将相应的驱动模块作为了标准库的一部分,只要是你安装了 Python,就可以使用;再者它可以类似于操作文件那样来操作 SQLite 数据库文件。还有一点,SQLite 源代码不受版权限制。
  
  建立连接
  
  SQLite 也是一个关系型数据库,所以 SQL 可以直接在里面使用。由于 SQLite 的驱动已经在 Python 里面了,所以只要引用就可以直接使用,由于我们之前已经讲过 MySQL 了,所以对于本次内容理解起来就容易多了。
  
  >>> import sqlite3
  
  >>> conn = sqlite3.connect('lite.db')
  
  由上面的代码我们得到了连接对象,是不是觉得比 MySQL 连接要简单很多呢?在 sqlite3.connect('lite.db') 中,如果已经有了那个数据库,就直接连接它,如果没有的话,就会自动建一个。需要注意的是,这里的路径是可以随意指定的。
  
  下面的代码显示的是连接对象的属性和方法:
  
  >>> dir(conn)
  
  ['DataError', 'DatabaseError', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'Warning', '__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'commit', 'create_aggregate', 'create_collation', 'create_function', 'cursor', 'execute', 'executemany', 'executescript', 'in_transaction', 'interrupt', 'isolation_level', 'iterdump', 'rollback', 'row_factory', 'set_authorizer', 'set_progress_handler', 'set_trace_callback', 'text_factory', 'total_changes']
  
  建立游标
  
  这一步其实跟 MySQL 也很类似,连接了数据库之后,要建立游标对象:
  
  >>> cur = conn.cursor()
  
  接下来就是对数据库内容的操作,都是用游标对象方法来实现:
  
  >>> dir(cur)
  
  ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'arraysize', 'close', 'connection', 'description', 'execute', 'executemany', 'executescript', 'fetchall', 'fetchmany', 'fetchone', 'lastrowid', 'row_factory', 'rowcount', 'setinputsizes', 'setoutputsize']
  
  我们在里面看到了一系列我们熟悉的名称:close()、execute()、fetchall() 等。
  
  1.创建数据库表
  
  面对 SQLite 数据库,我们之前熟悉的 SQL 指令都可以用:
  
  >>> create_table = "create table books (title,author,language)"
  
  >>> cur.execute(create_table)
  
  <sqlite3.Cursor object at 0x104f296c0>
  
  这样就在数据库 lite.db 中建立了一个表 books。对这个表可以增加数据:
  
  >>> cur.execute('insert into books values("python basic","rocky","python")')
  
  <sqlite3.Cursor object at 0x104f296c0>
  
  为了保证数据能够保存,还要进行如下操作:
  
  >>> conn.commit()
  
  >>> cur.close()
  
  >>> conn.close()
  
  以上,在刚才建立的数据库中已经有了一个表 books,表中已经有了一条记录。
  
  2.查询
  
  保存以后我们来查询一下:
  
  >>> conn = sqlite3.connect('lite.db')
  
  >>> cur = conn.cursor(www.feifanyule.cn/)
  
  >>> cur.execute('select * from books')
  
  <sqlite3.Cursor object at 0x104f297a0>
  
  >>> cur.fetchall()
  
  [('python basic', 'rocky', 'python')]
  
  3.批量插入
  
  我们来给 books 表中多增加一些内容,以便于我们进行其它的操作:
  
  >>> books = [("first book","first","c"),("second book","second","c++"),("third book","third","java")]
  
  这次我们来一个批量插入:
  
  >>> cur.executemany('insert into books values (?,?,?)',books)
  
  <sqlite3.Cursor object at 0x104f297a0>
  
  >>> conn.commit()
  
  接下来我们用循环语句来打印一下查询结果:
  
  >>> rows = cur.execute('select www.mingcheng178.com* from books')
  
  >>> for row in rows:
  
  ...     print(row)
  
  ...
  
  ('python basic', 'rocky', 'python')
  
  ('first book', 'first', 'c')
  
  ('second book',  www.mhylpt.com/'second', 'c++')
  
  ('third book', 'third',www.yigouyule2.cn 'java')
  
  4.更新
  
  正如我们前面所说的,在 cur.execute() 中,可以写 SQL 语句来操作数据库:
  
  >>> cur.execute("update books set title='physics' where author='first'")
  
  <sqlite3.Cursor object at 0x104f297a0>
  
  >>> conn.commit()
  
  接下来我们按照条件查询来看一看:
  
  >>> cur.execute("select * from books where author='first'")
  
  <sqlite3.Cursor object at 0x104f297a0>
  
  >>> cur.fetchall()
  
  [('physics', 'first', 'c')]
  
  5.删除
  
  删除也是操作数据库必须的动作:
  
  >>> cur.execute("www.gcyL157.com select * from books")
  
  <sqlite3.Cursor object at 0x104f297a0>
  
  >>> cur.fetchall(www.michenggw.com)
  
  [('python basic', 'rocky', 'python'), ('physics', 'first', 'c'), ('third book', 'third', 'java')]
  
  最后不要忘记在完成对数据库的操作以后,一定记得给人家「关上门」:
  
  >>> cur.close()
  
  >>> conn.close()
  
  写在之后
  
  基本的知识差不多就是这些,当然肯定不局限于此。在实际的编程中我们肯定会遇到很多的问题,大家记得要多多去查阅官方文档,学会解决问题。

© 著作权归作者所有

SEOwhywhy
粉丝 8
博文 155
码字总数 342404
作品 0
私信 提问
Python中使用SQLite

SQLite: SQLite是一种数据库,Python中集成了SQLite3,所以在Python中使用SQLite,可以直接导入SQLite包,不需要做额外的配置。 更多的SQLite简介和相关知识可以查看专门的教程:http://ww...

akane_oimo
2018/09/24
51
2
python使用sqlite数据库存储数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/winycg/article/details/83933225 SQLite是一款开源的数据库引擎,由于无需运行单独的服务器,因此成为小型项...

winycg
2018/11/10
0
0
python中的SQLite数据库

python中的SQLite数据库 Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它使用一个文件存储整个数据库,操作十分方便...

幸运券发放
2018/05/03
0
0
SQLite数据库的第一次折腾

sqlite有一件事让我很吃惊,它竟然只有一个可执行文件,而且是那么的小。虽然之前早有耳闻sqlite是多么的轻量级,但确实想不到,竟然小到了这中地步。 python内建了对sqlite数据库的操作模块...

synelang
2010/11/17
1K
0
Python中轻量数据库SQlite3的使用

版权声明:本文为博主 一銤阳光 学习整理的文章,如需转载,请注明出处、附上CSDN博文链接。 https://blog.csdn.net/CSDNhuaong/article/details/80793573 1.写在前面 Python SQLITE数据库是...

一銤阳光
2018/06/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SSH安全加强两步走

从 OpenSSH 6.2 开始已经支持 SSH 多因素认证,本文就来讲讲如何在 OpenSSH 下启用该特性。 OpenSSH 6.2 以后的版本多了一个配置项 AuthenticationMethods。该配置项可以让 OpenSSH 同时指定...

xiangyunyan
40分钟前
4
0
C或C++不是C/C++

http://www.voidcn.com/article/p-mucdruqa-ws.html

shzwork
今天
6
0
OSChina 周六乱弹 —— 如何将梳子卖给和尚

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :划水五分钟,专注两小时。分享Various Artists的单曲《贝多芬第8号钢琴奏鸣曲悲伤的第三乐章》: 《贝多芬第8号钢琴奏鸣曲悲伤的第三乐...

小小编辑
今天
305
8
ES5

什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误...

wytao1995
今天
7
0
c++ 内联函数调用快的原因

见图片分析

天王盖地虎626
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部