首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Python打开数据库的大门|SQLite初识

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

程序的运行离不开对数据的操作。当我们操作体量较小的数据时,如何存储数据似乎还不是一个问题。一旦数据量成千上万甚至几十几百万的时候,数据的存储方式就对程序的运行产生重大影响了。这时候想再用文本、excel等形式存储数据就是一场灾难了。要想获得更高的效率,存储数据我们要选择专业的容器,因此我们选择数据库作为我们数据的家。

数据库可以分为关系型数据库和非关系型数据库,其中关系型数据库很像我们熟悉的表格结构,一行是一条数据,每列是数据的一个属性,看起来规规整整。在大多数情况下,尤其是我们自己编程自己用的情况下,关系型数据库完全能够满足我们的需要,所以我们着重了解关系型数据库。

常用的关系型数据库有Oracle、DB2、MYSQL、Microsoft SQL Server、Microsoft Access等。虽然品类众多,但因为它们都符合关系型数据库数据结构的特点,所以操作方法都大同小异,都可以使用SQL语句进行操作。

什么是SQL语句呢?它的全称是Structured Query Language(结构化查询语言),它规定了一种操作数据库中数据的标准方法。所以我们学会了SQL,就可以在各种关系型数据库中进行使用。

但上述的数据库需要进行安装、部署,有些数据库还是收费的,不能让我们一试为快。好在我们可以选择一个轻量级的数据库SQLite,使用Python直接建库并进行操作。需要用到的模块是sqlite3,这个模块是Python的自带模块,我们直接导入即可:

Python的模块并不是数据库本身,所以Python在操作任何数据库之前都需要连接到数据库。在sqlite3中,我们使用connect方法去连接数据库。SQLite数据库实际上是一个文件,所以connect方法传入的参数是数据库文件的路径,而其他数据库则是一项服务,连接时需要提供地址、端口、账号密码等信息。如果向connect方法传入的文件不存在的话,sqlite3则会在此位置上建立一个数据库文件:

数据库已经建立好了。数据库是表的集合,那么接下来我们需要建表。建表需要使用到SQL语句,它的结构大概是这样的:

CREATE TABLE 表名 (字段1信息,字段2信息,字段3信息);

其中每个字段(即每列)的信息结构如下:

字段名 数据类型 其他要求

可能这样说太抽象,我们实际来写一个句子。先设定一个情境,最近因为疫情的原因很多人都在囤药,虽然囤药行为不可取,但是备药的习惯还是应该养成的。不过正确的备药方式离不开对药品保质期的关注,那么我们就写一个表格来记录一下我们备的药的状态。需要的字段是药名、保质期、剩余量、是否用完:

这里可以看到我们虽然刚才预设了4个字段,但实际上建立了5个字段,这是因为我们需要一个id字段作为主键。主键一定是要独一无二的,这样数据库才能准确地通过主键去找到相应的数据。就像全国有很多的人重名,但身份证号应该是独一无二的,否则就要出事。id字段的类型设置为了INTEGER,并且对其补充了PRIMARY KEY(即设置此字段为主键)、AUTOINCREMENT(自动递增)、NOT NULL(不能为空)的要求。药名的字段类型为VARCHAR,有点像字符串。过期日期的字段类型为DATE,即日期。剩余量和是否用完的字段类型为INT即整数,其中是否用完字段我们用0代表没用完,1代表已用完。

另外还需要注意的是,在括号中最后一个字段信息结束时不要加逗号,而在整个SQL句子结束后要加分号。

这样一个SQL语句就完成了,接下来我们要用Python去执行这个SQL语句。在Python中执行SQL语句依靠的是游标cursor,在游标执行语句后需要对数据库使用commit方法提交,结束操作后使用close方法关闭对数据库的连接:

执行之后,我们的表格就建立成功了,但是我们现在看不到它。不过没关系,我们可以使用一些软件去读取数据库的db文件,比如Navicat(收费,可以搜学习版),DBWeaver(免费)等。PyCharm Pro也支持对数据库的连接。大家可以根据情况选择适合的连接方式,不过这些都不是必须的,只是起到辅助作用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230114A06S8100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券