python自带数据库好用吗 揭秘SQLite数据库优劣势

如果你是软件开发人员,相信你一定知道,甚至用过一个非常轻量级的数据库——SQLite。它几乎拥有关系数据库所需的所有功能,并且所有这些功能都保存在一个文件中。以下是一些官方网站显示SQLite可以使用:嵌入式设备和物联网数据分析数据传输文件归档和/或数据容器内部或临时数...

如果你是软件开发人员,相信你一定知道,甚至用过一个非常轻量级的数据库——SQLite。它几乎拥有关系数据库所需的所有功能,并且所有这些功能都保存在一个文件中。以下是一些官方网站显示SQLite可以使用:

嵌入式设备和物联网

数据分析

数据传输

文件归档和/或数据容器

内部或临时数据库

在演示或测试期间代表企业数据库。

教育、培训和测试

实验性SQL语言扩展

最重要的是,SQLite实际上充当了Python的内置库。换句话说,你不需要安装任何服务器/客户端软件或者让某些东西作为服务运行。只要用Python导入库,开始编码,就有关系数据库管理系统了!

输入和使用

当我们说“内置”时,这意味着您甚至不需要运行pip install来获取库。只需通过以下方式导入即可:

import sqlite3 as sl

创建到数据库的连接

不用担心驱动、连接字符串等。您可以使用简单的连接对象创建SQLite数据库:

con = sl.connect('my-test.db')

运行这行代码后,我们已经创建了数据库并连接到它。我们要求Python自动连接现有数据库,所以不是空。否则,我们可以使用完全相同的代码连接到现有的数据库。

创建一个表

然后创建一个表:

with con: con.execute(""" CREATE TABLE USER ( id INTEGER NOT NULL PRIMARYKEY AUTOINCREMENT, name TEXT, age INTEGER ); """)

向该用户表添加三列。如您所见,SQLite是轻量级的,但它支持传统RDBMS应该具有的所有基本特性,如数据类型、可空性、主键和自动增量。运行这段代码后,创建了一个表,尽管它不输出任何内容。

插入记录

我们在刚刚创建的用户表中插入一些记录,也可以证明确实是我们创建的。假设您想一次插入多个条目。Python中的SQLite可以轻松实现这一点。

sql = 'INSERT INTO USER (id, name, age) values(?,?, ?)'data = [ (1, 'Alice', 21), (2, 'Bob', 22), (3, 'Chris', 23)]

我们需要使用问号作为占位符来定义SQL语句。然后,创建一些要插入的示例数据。通过连接对象来插入这些采样线。

with con: con.execute***ny(sql, data)

运行代码后,没有提示证明我们成功了。

查找表

现在,是时候验证所做的一切了。查询该表以获取示例行。

with con: data = con.execute("SELECT *FROM USER WHERE age <= 22") for row in data: print(row)

另外,虽然SQLite是轻量级的,但是作为一个广泛使用的数据库,大多数SQL客户端软件都支持它的使用。我用得最多的是DBeaver。

从SQL客户端(DBeaver)连接到SQLite数据库

因为我使用googlecolab,所以我需要将-my-test.db测试数据库文件下载到本地计算机。在本例中,如果Python在本地计算机上运行,您可以使用SQL客户端直接连接到数据库文件。

在DBeaver中,创建一个新连接,并选择SQLite作为DB类型。

然后,浏览到数据库文件。

现在,您可以在数据库上运行任何SQL查询。它与其他传统的关系数据库没有什么不同。

与Pandas无缝融合与熊猫无缝集成

事实上,作为Python的内置特性,SQLite也可以与熊猫数据框无缝集成。

定义数据框:

df_skill = pd.DataFrame({ 'user_id': [1,1,2,2,3,3,3], 'skill': ['Network Security','Algorithm Development', 'Network Security', 'Java', 'Python', 'Data Science','Machine Learning']})

然后,您可以简单地调用数据框的to_sql()方法将其保存到数据库中。

df_skill.to_sql('SKILL', con)

这样,我们甚至不需要事先创建一个表,就可以推断出列的数据类型和长度。当然,如果你愿意,还是可以提前定义。

然后,假设我们想要连接表USER和SKILL,并将结果读入Pandas数据框。也是天衣无缝。

df = pd.read_sql(''' SELECT s.user_id, u.name, u.age,s.skill FROM USER u LEFT JOIN SKILL s ON u.id= s.user_id''', con)

让我们将结果写入名为USER_SKILL的新表中:

df.to_sql('USER_SKILL', con)

然后,您还可以使用SQL客户端来检索表。

本文介绍了如何使用Python的内置库sqlite3在sqlite数据库中创建和操作表。当然也支持更新和删除。你可以自己试试。

最重要的是,我们可以轻松地将SQLite数据库中的表读入Pandas数据框架,反之亦然。这使得我们更容易与轻量级关系数据库进行交互。此外,SQLite没有身份验证,因为一切都需要是轻量级的。

图片:unsplash

Python隐藏了很多惊喜。它们不是故意隐藏的,只是因为Python中有太多现成的特性,人们找不到。

本文来自掩于岁月投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/534448.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-05
下一篇 05-05

相关推荐

  • 买电器苏宁和京东哪个更靠谱 简评两大平台优劣势

    联赛赛场又一场“电商大战”落下帷幕。10月16日晚,2020英雄联盟全球总决赛舞台上,SN 3:1击败JDG,晋级四强。这是本届世界锦标赛开赛以来,中国队的第一场“内战”。两支球队都来自中国**最高级别的英雄联盟职业联赛LPL,并且都代表了不同的电子商务巨头。图/官方视频截图SN

    2023-07-26 09:36:01
    329 0
  • 互联网的优势和劣势分别是什么(互联网的优势和劣势英语作文120词)

    互联网可以开阔我们的视野。互联网信息量大,信息交流速度快,自由度高。它实现了全球信息共享。你可以在网上获取自己的需求,在网上浏览世界,了解世界最新的新闻、信息和技术动态。但同时也有成瘾性,网上很难分辨真假。使用互联网有很多好处。比如可以让两地的沟通更加便捷

    2023-07-21 22:24:01
    900 0
  • 麒麟985和麒麟990哪个好 两种处理器的优劣势

    麒麟985和麒麟990哪个处理器好?通常麒麟985是介于麒麟820和麒麟990之间的旗舰芯片。所以麒麟990处理器在定位上要优于麒麟985处理器。两者的具体区别是什么?区别,我们分开来了解一下。麒麟985和麒麟990的评测:麒麟985采用7nm工艺,1+3+4 CPU架构,大核延续A76架构,双核NPU

    2023-07-17 09:50:01
    1035 0
  • 爱奇艺和优酷哪个资源多 两种软件的优劣势

    不知道从什么时候开始,我们看电视剧的方式悄然发生了变化。以前,吃完饭,来不及收拾碗筷的阿姨妈妈们围坐在沙发上,拿着29寸CRT电视的老画面,细细品味剧中人物的喜怒哀乐;现在,一直以来,我们都不用再忍受手里拿着iPad和定位器的电视台的被动播放,很多视频网站已经做到

    2023-07-15 01:49:01
    472 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信