您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 鹰潭分类信息网,免费分类信息发布

Python3萌新入门笔记(45)

2022/10/19 7:47:12发布56次查看
这一篇教程,我们一起来了解一些数据库相关的知识。
这里我们所接触的是关系型数据库。
当前主流的关系型数据库有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 sqlite3
conn = 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=0 and chinesescore=0 and 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语句。
connmit()
except:
raise
finally:
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:分数
鹰潭分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录