如果你是软件开发人员,相信你一定知道,甚至用过一个非常轻量级的数据库——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