Python 操作 SQLite 数据库

来自:Python空间(微信号:Devtogether),作者:Rocky0429


本文字数:3808 字

阅读本文大概需要:10 分钟


写在之前


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()
>>> 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 * from books')
>>> for row in rows:
...    print(row)
... 
('python basic''rocky''python')
('first book''first''c')
('second book''second''c++')
('third book''third''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("select * from books")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic''rocky''python'), ('physics''first''c'), ('third book''third''java')]


最后不要忘记在完成对数据库的操作以后,一定记得给人家「关上门」:


>>> cur.close()
>
>> conn.close()


写在之后


基本的知识差不多就是这些,当然肯定不局限于此。在实际的编程中我们肯定会遇到很多的问题,大家记得要多多去查阅官方文档,学会解决问题。


至此,Python 操作数据这一部分就结束了,其实不光是这一个章节的结束,我计划里面的整个「零基础入门学习 Python」这个系列也到此结束了,后续随着我碰到的知识的增加,还会再给大家更新关于 Python 方面的东西,让我们一起加油。


如果你觉得本篇文章对你有所帮助的话,欢迎点赞 + 关注,期待和你的交流。


The end。

推荐↓↓↓
Python编程
上一篇:Python里面这些点,据说80%的新手都会一脸懵逼 下一篇:手把手教你用Python分析电影 | 以《蚁人2》为例