原标题:Python3入门笔记

这一篇教程,我们一起来了解一些数据库相关的知识。

这里我们所接触的是关系型数据库。

当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL。

那么,什么是关系型数据库?

关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

这句话不好理解,看起来有些晕。

实际上,你可以把关系型数据库想象成一个Excel工作簿,工作簿的名称就相当于数据库的名称,工作簿中包含的工作表就是二维数据表。同一个工作簿中的工作表之间存在联系,从而形成了工作簿的数据组织。

除了要知道这些内容,我们还要了解一些相关的概念:

关系:可以理解为一张二维数据表,关系名就是数据表的名称。例如班级数据库中的成绩表。元组:可以理解为二维数据表中的一行,它是数据库中的一条记录。例如成绩表中某一名学生的成绩记录。属性:可以理解为二维数据表中的一列,它是数据库中的一个字段。例如成绩表中的学号。域:是指属性的取值范围,也就是数据库中某一列的取值限制。例如某一成绩要在0~100之间。关键字:是指一组可以唯一标识元组的属性。它是数据库中的主键,主键可以是一个或多个。例如学号是唯一的。关系模式:是指对关系的描述,也就是数据库中的表结构。格式为:关系名(属性1,属性2,…)。例如:成绩表(学号,姓名,语文,数学)

了解了关系型数据库的一些基本概念,接下来我们来看如何使用关系型数据库。

作为一篇入门教程,我们从一个相对快捷、简单的数据库SQLite来入手。

Python官方文档中对SQLite的介绍如下:

SQLite是一个C语言库,它提供了一个轻量级的基于磁盘的数据库,不需要单独的服务器进程,并且允许使用SQL查询语言的非标准变体来访问数据库。一些应用程序可以使用SQLite进行内部数据存储。还可以使用SQLite对应用程序进行原型化,然后将代码移植到更大的数据库,如PostgreSQL或Oracle。

这个数据库不用单独安装,因为Python3中已经包含这个数据库引擎,并且在Python标准库中包含了对这个数据库进行操作的PySqlite模块(标准库中模块名为sqlite3),所以使用起来非常方便。

对于这个数据库的基本操作,在本篇教程中主要涉及以下内容:

创建/连接数据库打开游标创建表结构操作数据(增、删、改、查)提交事务关闭游标链接

一、创建/连接数据库

不管是使用一个已有的数据库(.db文件),还是创建一个新的数据库,我们都需要和数据库进行连接。

然后通过连接对象进行后续操作。

这里我们可以使用connect()函数。

这个函数能够创建数据库连接对象,并且当数据库不存在时,创建新的数据库。

示例代码:(创建数据库student)

import sqlite3conn = sqlite3.connect('student.db')

二、创建游标

当完成一个新数据库的创建,接下来就是在数据库中添加新的数据表以及表中的数据。

但是,创建表以及对表中数据的操作,我们都需要执行相应的SQL(Structured Query Language:结构化查询语言)语句。

而执行SQL语句,我们需要先打开游标,通过游标执行SQL语句。

示例代码:

cur = conn.cursor()

三、表结构

打开游标之后,我们就可以通过游标的execute()方法执行SQL(Structured Query Language:结构化查询语言)语句了。

这里我们创建成绩表“score”。

如果已存在同名数据表,会无法完成新数据表的创建,所以在创建之前,我们需要先删除已有的数据表,再创建新的数据表。

删除数据表的SQL语句为:DROP TABLE IF EXISTS 表名

创建数据表的SQL语句为:

CREATE TABLE 表名(字段名 数据类型 PRIMARY KEY[主键,一个或多个字段],字段名 数据类型 约束[可选],……字段名 数据类型)

创建数据表时,我们需要定义表名,然后定义表中(括号中)的字段名、数据类型以及相关的约束。

关于数据类型,SQLite具有以下五种数据类型:

NULL:空值。INTEGER:带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。REAL:浮点数,存储为8-byte IEEE浮点数。TEXT:字符串文本。BLOB:二进制对象。

另外还要注意,被指定为主键的列,列值不可有重复。

除了数据类型,我们还可以给字段值添加约束,例如不能为空值、数值必须在某一区间等。

约束的类型包含以下几种:

PRIMARY KEY:主键约束,唯一标识数据库表中的每条记录。NOT NULL:非空约束,确保某列不能有 NULL 值。DEFAULT:默认约束,当某列没有指定值时,为该列提供默认值。UNIQUE:唯一约束,确保某列中所有的值互不相同。CHECK:检查约束,确保某列中所有的值满足指定的条件。

那么,参照着上方的SQL语句知识,我们将删除表以及创建表结构的语句添加到代码中。

示例代码:(删除/创建表score)

cur.execute('DROP TABLE IF EXISTS score')cur.execute('''CREATE TABLE score( StuId INTEGER PRIMARY KEY NOT NULL, StuName TEXT NOT NULL, ChineseScore REAL DEFAULT 0 CHECK(ChineseScore>=0 AND ChineseScore<=100), MathScore REAL DEFAULT 0 CHECK(ChineseScore>=0 AND ChineseScore<=100) )''')

上方代码中,表结构中共4个字段:

StuId:学号,整数,主键,非空字段StuName:姓名,文本,非空字段ChineseScore:语文成绩,浮点数,默认值为0,值必须大于等于0并且小于等于100MathScore:数学成绩,浮点数,默认值为0,值必须大于等于0并且小于等于100

四、添加数据

通过之前的步骤,完成了表的创建,但这时还只是一个空表。

我们需要使用这个表存储数据,就要把数据添加到表中。

添加数据的SQL语句为:INSERT INTO 表名 [(列1,列2,…)] VALUES (值1,值2,…)

如果添加一行数据时,不指定仅为某些列添加数据,可以省略指定列的部分。

例如,为成绩表score添加一行数据:’INSERT INTO score VALUES(20712420205,”小楼”,100,100)’

注意:SQL语句中的值如果是字符串需要加上双引号。

接下来,我们将一个文本文档“score.txt”中的数据逐行读取,并添加到为这个数据表中。【点此下载】

文档的内容如下:

‘20712420001’,’吴陈’,92,93‘20712420002’,’刘捷’,81,97‘20712420003’,’万刚’,82,65(省略部分内容)

如上所示,文档中每一行数据都是逗号分隔,学号和姓名带有单引号,语文成绩和数学成绩均为数字。

根据表中相应字段的数据类型,很明显学号带有引号,不符合INTEGER类型。

所以,我们需要在将每一行数据插入到数据表之前,先进行数据的修改,去除字段值两侧的单引号。

示例代码:

query = 'INSERT INTO score VALUES(?,?,?,?)' # 定义SQL语句with open(r'C:\Users\Administrator\Desktop\score.txt') as file: # 打开文件 for line in file: # 读取文件每一行 values = [i.strip("'") for i in line.split(',')] # 以逗号为分隔符,将每一行内容变为值,去除单引号后存入列表。 conn.execute(query, values) # 将列表中的值代入SQL语句,并执行SQL语句。

上方代码中,定义SQL语句时使用了字段标记“?”,类似于格式化字符串时字符串中的“%”。

当我们使用execute()方法时,可以通过第2个可选参数parameters,将需要添加的值以列表的形式(代码中的values)传入。

五、提交事务

但是,当我们运行写好的代码,会发现数据表仍然是空表。

这是因为,我们只做了数据的修改,但是没有提交。

所以,我们还需要加上一句提交事务的代码。

示例代码:

conn.commit()

六、关闭游标与连接

当我们不再使用游标游标和连接,我们要确保它们正常的关闭。

示例代码:

cur.close()conn.close()

不过,如果程序发生异常,怎么确保它们被关闭了呢?

可以通过try:…except:…finally:…的处理,将关闭语句写在finally的语句块中。

示例代码:(完整代码)

import sqlite3conn = sqlite3.connect('student.db')try: cur = conn.cursor() cur.execute('DROP TABLE IF EXISTS score') cur.execute(''' CREATE TABLE score( StuId INTEGER PRIMARY KEY NOT NULL, StuName TEXT NOT NULL, ChineseScore REAL DEFAULT 0 CHECK(ChineseScore>=0 AND ChineseScore<=100), MathScore REAL DEFAULT 0 CHECK(ChineseScore>=0 AND ChineseScore<=100) ) ''') query = 'INSERT INTO score VALUES(?,?,?,?)' # 定义SQL语句 with open(r'C:\Users\Administrator\Desktop\score.txt') as file: # 打开文件 for line in file: # 读取文件每一行 values = [i.strip("'") for i in line.split(',')] # 以逗号为分隔符,将每一行内容变为值,去除单引号后存入列表。 conn.execute(query, values) # 将列表中的值代入SQL语句,并执行SQL语句。 conn.commit()except: raisefinally: cur.close() conn.close()

以上是本篇教程的内容,在下一篇教程中,我们来一起学习更多的数据库操作。

本节知识点:

1、关系型数据库简介;

2、SQLite数据库;

3、创建数据库与数据表;

4、添加数据到数据表。

本节英文单词与中文释义:

1、connect:连接

2、cursor:指针/游标

3、commit:提交

4、exist:存在

5、drop:放弃

6、table:表

7、create:创建

8、primary:主要的

9、unique:唯一的

10、check:检查

11、insert into:插入 到

12、score:分数

http://www.aibbt.com/a/26590.html返回搜狐,查看更多

责任编辑:

python3笔记_Python3入门笔记相关推荐

  1. python3入门与进阶笔记_我的Python3萌新入门笔记

    Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...

  2. python3萌新入门笔记_我的Python3萌新入门笔记

    Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...

  3. 【Python3零基础入门笔记】05 Python时间处理——time库的使用

    time库的使用: time库基本情况 时间获取 时间格式化 程序计时 文本进度条实例 time库基本情况 Time库是python中处理时间的标准库 计算机时间表达 提供获取系统时间并格式化输出功能 ...

  4. python3入门与进阶笔记_Python3入门与进阶【笔记】

    1.二.八.十六进制转十进制:int('10', base=2).int('10', base=8).int('10', base=16): 2.八.十.十六进制转二进制:bin(0o+xxx).bi ...

  5. python3笔记_Python3学习笔记(四)

    原标题:Python3学习笔记(四) 错误.调试和测试 程序运行中,可能会遇到BUG.用户输入异常数据以及其它环境的异常,这些都需要程序猿进行处理.Python提供了一套内置的异常处理机制,供程序猿使 ...

  6. python3笔记_python3基础笔记(一)

    1.就单个 python 文件来说在 python 中 python 的后缀可以是任意的.但如果这个 python 文件需要导入的时候如果不是 .py 会出错.所以一般情况下 python 文件的后缀 ...

  7. html入门笔记,HTML入门笔记(附完整代码)

    本文笔记基于B站资源:千峰教育 目录 1.写博客 2.新闻列表 3.图片的使用 4.超链接与图片的知识补充 5.网盘的制作 6.简单表格的制作 7.个人简历 8.个人简历补充 9.登录表单 10.ge ...

  8. 吴恩达机器学习笔记 | 人工智能入门笔记(一)

    文章目录 机器学习 基础介绍 什么是机器学习? 监督学习 无监督学习 单变量线性回归 模型表示 代价函数 代价函数的直观理解 梯度下降 梯度下降的直观解释理解 梯度下降的线性回归 线性代数回顾 矩阵和 ...

  9. Data Mining Machine Learning学习笔记 机器学习入门笔记 之jieba分词(中文分词)(二)

    第二章 Rationlism & Empiricism 理性主义和经验主义 Rationalism (按照人类的方式进行处理,做词法,语法,语义分析) Natural Language Pro ...

  10. Python3入门笔记(1) —— windows安装与运行

    Python3入门笔记(1) -- windows安装与运行 Python的设计哲学是"优雅"."明确"."简单".这也是我喜欢Python ...

最新文章

  1. 51单片机程序及调试步骤实战经验
  2. 程序员娶妻子的经典准则
  3. 使用webpack、vue来开发一个todo项目
  4. Nmap用法的思维导图
  5. java中怎么找类的路径_Java中获取类加载路径和项目根路径的5种方法
  6. 300页!2020年全网最新Java面试题(附答案)开放下载!超全!!
  7. 学习python 3 入门知识
  8. 简单、易用的光盘封装工具-MKISO纪念版(V1.0.2.0)发布日志
  9. 纯JavaScript实现表白代码
  10. 数字与静态(HeadfirstJava随笔)(转)
  11. html5json转换为数组,Json转数组 在线
  12. 移动叔叔MTK6589一键ROOT工具v3.0+by+罗微
  13. C#使用libVLC制作视频播放器时自定义鼠标事件的捕获或者忽略
  14. error while trying to retrieving text
  15. CodeForces1036 F Relatively Prime Powers(莫比乌斯容斥)
  16. 百度网盘如何在线播放电影?
  17. 水果店的货源来自哪里,怎样做水果店找货源
  18. 远程办公:通过cpolar内网穿透,远程桌面控制家里公司内网电脑
  19. 手机访问WEB项目图片404
  20. 黑苹果11.0big sur驱动因特尔英特尔intel82599万兆网卡教程

热门文章

  1. 一些简单的css,html,js笔记分享给大家,希望能够帮助到大家
  2. Java类和对象之对象组合之求圆柱体积
  3. excel保存快捷键_Excel新手必备的5大技巧,看看你会几个?(附26个超实用快捷键)
  4. 全网搜索引擎采集(msray)|URL采集|关键词采集|域名采集
  5. wps的linux文字显示模糊,wps电脑打开文字模糊怎么办
  6. 游戏支付接口平台如何选择
  7. 怎样在html中设置首字母大写,css如何设置英文首字母大写
  8. 2020产品经理升职攻略-直播分享课
  9. [转载]分布式双活数据中心
  10. linux中设置中英文语言