一文教会你,Python数据如何存储

转载自志斌的Python笔记  3月28日

今天呢,小瑜专门写一篇关于数据存储的文章,让大家清楚的了解数据存储的方式,以及在什么情况下,使用什么存储方式。

本文将分三个方面来介绍数据存储:1.文件存储、2.关系型数据库存储、3.非关系型数据库存储。废话少说,让我们直接来看正文吧!

一、文件存储

1.1 TXT 文本

将数据存储到TXT文本的操作十分简单,在之前文章已经简单介绍过,而且TXT文本基本兼容任何平台,但是它有一个缺点—不利于检索。所以,如果对检索和数据结构的要求不高,且追求方便第一,就可以采用TXT文本方式存储。

其实使用TXT文件存储分为三部分:1.打开文件、2.读取(或存入)数据、3.关闭文件

代码如下:

# 普通写法

file1 = open('abc.txt','a',encoding='utf-8')

#第一个参数为文件路径,第二个参数为打开文件的模式,第三个参数为编码模式

file1.write('志斌')

#写入的内容

file1.close()

#关闭文件

当然了,我们有时候需要存储的不是文本数据,而是音频或视频数据时,我们需要将‘a’,变为‘ab’即可,如图open()函数的打开文件模式的种类:

#这里再顺便补充一个用法,为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with,之前的例子可以写成这样:

# 使用with关键字的写法

withopen('abc.txt','a',encoding='utf-8')asfile1:

#with open('文件地址','读写模式','编码模式') as 变量名:

#格式:冒号不能丢

file1.write('志斌')

#格式:对文件的操作要缩进

#格式:无需用close()关闭

1.2 JSON文件

JSON通过对象和数组的组合来表示数据,虽然结构简单但结构化程度非常高,是一种轻量级数据交换模式。JSON与Python中字典的交互可以通过Python中的json模块,它包含了两个函数:1.json.dumps(): 对数据进行编码、2.json.loads(): 对数据进行解码。

两个函数的实例代码如下:

importjson

# Python 字典类型转换为 JSON 对象

data1 = {'no':1,'name':'Runoob','url':'http://www.runoob.com'}

json_str = json.dumps(data1)

print("Python 原始数据:", repr(data1))

print("JSON 对象:", json_str)

# 将 JSON 对象转换为 Python 字典

data2 = json.loads(json_str)

print("data2['name']: ", data2['name'])

print("data2['url']: ", data2['url'])

如果你写入的是文件而不是字符串时,可以用1.1的方式进行存储,代码如下:

# 写入 JSON 数据

withopen('data.json','w')asf:

json.dump(data, f)

# 读取数据

withopen('data.json','r')asf:

data = json.load(f)

1.3 CSV文件

我们要引用csv模块。因为Python自带了csv模块,所以我们不需要安装就能引用它。

我们先来创建一个csv文件,代码如下:

# 引用csv模块。

importcsv

# 创建csv文件,我们要先调用open()函数,传入参数:文件名“asd.csv”、写入模式“w”、newline=''避免csv文件出现两倍的行距、encoding='utf-8'。

csv_file = open('asd.csv','w',newline='',encoding='utf-8')

文件创建完成后,我们需要调用我们要借助csv.writer()函数来建立一个writer对象。调用writer对象的writerow()方法,来将数据写入csv文件中。

# 用csv.writer()函数创建一个writer对象。

writer = csv.writer(csv_file)

# 借助writerow()函数可以在csv文件里写入一行文字 。

writer.writerow(['姓名','年龄'])

注意:writerow()函数里,需要放入列表参数,所以我们得把要写入的内容写成列表。就像['姓名','年龄']。

写入完成后,关闭文件就大功告成啦!

csv_file.close()

1.4 EXCEL文件

操作Excel文件需要使用到openpyxl模块,如果你的电脑上没有这个模块,可以采取以下方式进行安装:

pip install openpyxl

装好openpyxl模块后,首先要引用它,然后通过openpyxl.Workbook()函数就可以创建新的工作薄,代码如下:

# 引用openpyxl   

importopenpyxl

# 利用openpyxl.Workbook()函数创建新的workbook(工作薄)对象,就是创建新的空的Excel文件。

wb = openpyxl.Workbook()

创建完新的工作薄后,还得获取工作表。不然程序会无所适从,不知道要把内容写入哪张工作表里。

# wb.active就是获取这个工作薄的活动表,通常就是第一个工作表。

sheet = wb.active

# 可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"new name"。

sheet.title ='new name'

添加完工作表,我们就能来操作单元格,往单元格里写入内容。

# 把'数据名称'赋值给第一个工作表的A1单元格,就是往A1的单元格中写入了'数据名称'。

sheet['A1'] ='数据名称'

往单元格里写入内容只要定位到具体的单元格,如A1(根据Excel的坐标,A1代表第一列第一行相交的单元格),然后给这个单元格赋值即可。

如果我们想往工作表里写入一行内容的话,就得用到append函数。

# 把我们想写入的一行内容写成列表,赋值给row。

row = ['1','2','3']

# 用sheet.append()就能往表格里添加这一行文字。sheet.append(row)

如果一次性想写入的不止一行数据,只需加for循环即可。

最后,可千万记得保存文件!不然之前写的可白费了!

# 保存新建的Excel文件,并命名为“xxx.xlsx”

wb.save('xxx.xlsx')

二、关系型数据库

 在上文我们已经了解了文件存储,一旦数据量多或者数据比较复杂,存储到文件中的数据管理起来就不是很方便,而且效率比较低。这时需要将数据存储到数据库中,方便存储和管理。简单来说,关系型数据库是由多张能互相连接的二维行列表格组成的数据库。

常见的关系型数据库有以下五种。1.Oracle数据库、2.MySQL数据库、3.DB2数据库、4.SQLite数据库、5.SQLServer数据库

这里我们主要介绍MySQL数据库。

MySQL是最主流的关系型数据库,如果你不熟悉它也没有关系,我们只需要知道它的简单操作即可,如增删改查。

我们要使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。如果你没有安装的话,可以采取以下方式进行安装:

pip install mysql-connector

安装好之后,首先我们需要创建与数据库之间的链接,代码如下:

importmysql.connector

mydb = mysql.connector.connect(

host="localhost",# 数据库主机地址

user="yourusername",# 数据库用户名 

passwd="yourpassword"# 数据库密码

)

然后创建数据库,创建数据库使用 "CREATE DATABASE" 语句,以下创建一个名为 runoob_db 的数据库,代码如下:

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE runoob_db")

接着创建数据表,创建数据表使用 "CREATE TABLE" 语句,创建数据表前,需要确保数据库已存在,以下创建一个名为 sites 的数据表,代码如下:

mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")

然后开始插入数据,我们使用的是executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据,代码如下:

sql ="INSERT INTO sites (name, url) VALUES (%s, %s)"

val = [  ('Google','https://www.google.com'),

('Github','https://www.github.com'),

('Taobao','https://www.taobao.com'),

('stackoverflow','https://www.stackoverflow.com/')] mycursor.executemany(sql, val)

mydb.commit()# 数据表内容有更新,必须使用到该语句

执行以上代码后,我们来看看表中数据:

看来记录成功的插入了!

由于篇幅原因,关于其他的命令只做代码的简单介绍:

#删除

deletefrom表名 [where 条件];

#更新

updata table_name set field1 = new-value1,field2 = new-balue2 [where 条件];

#查询

select field1,field2fromtable_name [where 条件];

三、非关系型数据库

上面我们已经了解了一个关系型数据库MySQL,下面我们来介绍一下菲关系型数据库的使用。

关系型数据库的产品种类有很多,我们主要介绍MongoDB数据库

Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。如果你没有安装的话,可以采取以下方式进行安装:

pip install pymongo

首先,我们需要创建一个数据库,创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名。代码如下:

importpymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["runoobdb"]

接着创建集合,MongoDB 中的集合类似 SQL 的表。代码如下:

mycol = mydb["sites"]

然后就是插入数据,集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表,代码如下:

mylist = [  {"name":"Taobao","alexa":"100","url":"https://www.taobao.com"},

{"name":"QQ","alexa":"101","url":"https://www.qq.com"},

{"name":"Facebook","alexa":"10","url":"https://www.facebook.com"},

{"name":"知乎","alexa":"103","url":"https://www.zhihu.com"},

{"name":"Github","alexa":"109","url":"https://www.github.com"}]

x = mycol.insert_many(mylist)

总结

以上就是关于数据存储的几种方法,大家可以根据实际需求来进行选择。光说不练假把式,大家最好可以复现一下,这样才能更好的掌握这些知识。

你可能感兴趣的:(一文教会你,Python数据如何存储)