Python 如何操作 SQLite 数据库
写在之前
SQLite是一个小型的关系型数据库,它最大的特点在于不需要单独的服务、零配置。我们在之前讲过的两个数据库,不管是MySQL还是MongoDB,都需要我们安装。安装之后,然后运行起来,其实这就相当于已经有一个相应的服务在跑着。
SQLite与前面所说的两个数据库不同。首先Python已经将相应的驱动模块作为了标准库的一部分,只要是你安装了Python,就可以使用;再者它可以类似于操作文件那样来操作SQLite数据库文件。还有一点,SQLite源代码不受版权限制。
建立连接
SQLite也是一个关系型数据库,所以SQL可以直接在里面使用。由于SQLite的驱动已经在Python里面了,所以只要引用就可以直接使用,由于我们之前已经讲过MySQL了,所以对于本次内容理解起来就容易多了。
>>>importsqlite3 >>>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="createtablebooks(title,author,language)" >>>cur.execute(create_table)
这样就在数据库lite.db中建立了一个表books。对这个表可以增加数据:
>>>cur.execute('insertintobooksvalues("pythonbasic","rocky","python")')
为了保证数据能够保存,还要进行如下操作:
>>>conn.commit() >>>cur.close() >>>conn.close()
以上,在刚才建立的数据库中已经有了一个表books,表中已经有了一条记录。
2.查询
保存以后我们来查询一下:
>>>conn=sqlite3.connect('lite.db') >>>cur=conn.cursor() >>>cur.execute('select*frombooks')>>>cur.fetchall() [('pythonbasic','rocky','python')]
3.批量插入
我们来给books表中多增加一些内容,以便于我们进行其它的操作:
>>>books=[("firstbook","first","c"),("secondbook","second","c++"),("thirdbook","third","java")]
这次我们来一个批量插入:
>>>cur.executemany('insertintobooksvalues(?,?,?)',books)>>>conn.commit()
接下来我们用循环语句来打印一下查询结果:
>>>rows=cur.execute('select*frombooks') >>>forrowinrows: ...print(row) ... ('pythonbasic','rocky','python') ('firstbook','first','c') ('secondbook','second','c++') ('thirdbook','third','java')
4.更新
正如我们前面所说的,在cur.execute()中,可以写SQL语句来操作数据库:
>>>cur.execute("updatebookssettitle='physics'whereauthor='first'")>>>conn.commit()
接下来我们按照条件查询来看一看:
>>>cur.execute("select*frombookswhereauthor='first'")>>>cur.fetchall() [('physics','first','c')]
5.删除
删除也是操作数据库必须的动作:
>>>cur.execute("select*frombooks")>>>cur.fetchall() [('pythonbasic','rocky','python'),('physics','first','c'),('thirdbook','third','java')]
最后不要忘记在完成对数据库的操作以后,一定记得给人家「关上门」:
>>>cur.close() >>>conn.close()
写在之后
基本的知识差不多就是这些,当然肯定不局限于此。在实际的编程中我们肯定会遇到很多的问题,大家记得要多多去查阅官方文档,学会解决问题。
至此,Python操作数据这一部分就结束了,其实不光是这一个章节的结束,我计划里面的整个「零基础入门学习Python」这个系列也到此结束了,后续随着我碰到的知识的增加,还会再给大家更新关于Python方面的东西,让我们一起加油。
如果你觉得本篇文章对你有所帮助的话,欢迎点赞+关注,期待和你的交流。
Theend。
以上就是Python如何操作SQLite数据库的详细内容,更多关于python操作SQLite数据库的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。