存储数据的几种方式: 1.JSON文件的存储:是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,在python中分别以list和dict组成 <<<<<<<>>>>>>>> json模块提供的四个功能:s = "{'name':'张三'}" --->>>json数据 1.json.dumps(obj,ensure_ascii = False(指:不要再随意转换十六进制了就输出中文)) ---->>>实现python类型转化为json字符串,返回一个str对象,把一个python对象编码转换成json对象 2.json.loads() ---->>>把json格式字符串解码转化成python对象,从json到python的类型转化 3.json.dump() ----->>>将python内置类型序列化为json对象后写入文件 4.json.load() ----->>>读取文件中json形式的字符串转化成python对象 2.CSV文件的存储:是一种以.csv结尾的文件(针对于Excel文件来说) 1.所有的值都是字符串 向csv文件中写入数据: 1.引入csv模块 import csv 2.使用我open()函数创建csv文件 with open("student.csv","a+",newline='') as file: 3.借助csv.writer()创建writer对象 writer = csv.writer(file) 4.调用writer对象的writerow()方法写入一行数据 writer.writerow([]) 5.调用writer对象的writerows()方法写入多行数据 lst = [ [] [] ] writer.writerows(lst) 从csv文件读取数据: 1.引入csv模块 import csv 2.使用open()函数打开csv文件 with open("student.csv","r",newline='') as file: 3.借助csv.read()创建reader对象 reader = csv.reader(file) 4.读到的每一行都是一个列表 for row in reader: print(row) 3.Excel表格存储数据:以 .xlsx 结尾的文件称为Excel文件,也称为一个工作簿(包含n多个sheet表格),每一个格子称为单元格 -->>import openpyxl 向Excel中写入数据:1.创建工作簿对象openpyxl.Workbook()2.获取活动工作表对象 wb.active3.获取单元格 sheet[单元格名称('A1')] 4.向单元格中写入数据 cell.value = 值 5.向Excel中写入一行数据 sheet.append(列表) 6.保存Excel文件 wb.save() 从Excel中读取数据:1.加载工作簿对象openpyxl.load_workbook(文件名)2.获取活动工作表对象 wb.active3.获取单元格 sheet[单元格名称]4.获取单元格的值 cell.value5.获取一系列格子 sheet['A'],sheet[3],sheet['A:C']6.获取整个表格的所有行 sheet.rows 4.MySQL数据库存储数据: MySQL(数据库管理系统)的数据类型:1.数值类型:int (4个字节) float (4个字节) integer (与int同义词) double (8个字节) 2.字符串类型: char (固定长度字符串) varchar (可变长度字符串) 3.日期/时间类型: Date:YYY-MM-DD Datetime:YYYY-MM-DD HH:MM:SS Time: HH:MM:SS SQL(结构化查询语言)语言包含4个部分:1.数据定义语言 (如 create(创建),drop(删除),alter(修改)等语句) ----->>>针对数据库或表 2.数据查询语言 (select语句) 3.数据操纵语句 (insert(新增),delete(删除),update(修改)语句) ---->>>针对表中的数据 4.数据控制语句 (如 grant(赋予权限),revoke(回收权限),commit(提交事务),rollback(回滚事务)等语句) SQL数据库名:database 表名: table 行: row 列: column 索引: index 主键(不允许重复 可设置auto_increment表示自动增长) : primary key SQL定义语言:1.创建数据库--->>> create database 数据库名 2.显示所有数据库--->>> show databases 3.使用指定数据库--->>> use 数据库名 4.删除表---->>> drop table 表名 5.删除数据库---->>> drop database 数据库名 6.修改表结构: a.增加列---->>> alter table 表名 add 列名 数据类型(长度) b.修改列的数据类型--->>> alter table 表名 modify 数据类型(长度) c.修改列的名称--->>> alter table 表名 change 原列名 新列名 数据类型(长度) d.删除列--->>> alter table 表名 drop 列名 SQL数据操纵语言:1.向表中插入数据---->>> insert into 表名 [(字段列表)] values (值列表) 2.修改表中数据----->>> update 表名 set 字段1=值1,字段2=值2 [where] 3.删除表中的数据----->>> delete from 表名 [where] SQL数据查询语言:1.单表查询--->>> select ... from 表名 [where] ... [group by] ... [having]...[order by(排序) asc/desc] 2.模糊查询--->>> 只能与字符型一起使用的like关键字,区间范围的 between...and...在给定的值中进行选择的 in3.分组函数 count() sum() avg() max() SQL数据表连接查询(查询来源与两张表):select...from 表1 inner join 表2 on 链接条件 ..[where]... select...from 表1 left/right join 表2 on 链接条件 ..[where]... python与MySQL进行交互: 常用操作:插入数据: insert 查询数据: select 更新数据: update 创建数据库链接: connect(host,user,passwd,database) 5.MongoDB(存储数据)属于NOSQL,使用c++开发的,它是一种基于分布式文件存储的开源数据库系统,将数据存储为一个文档,数据结构由键值(key-value)对形成的 MongoDB文档类似于JSON对象,字段值可以包含其他文档,数组及文档数组 MongDB数据库叫:database 表名:collection 行: document or BSON document 列: field 自动添加的数(不允许重复): _id(auto set) MongoDB数据类型: 1.Object ID:a.每个文档(行)都有一个属性,为 _id,保证每个文档的唯一性b.可以自己去设置_id插入文档,如果没有提供,那么MongoDB为每个文档提供一个独特的_id,类型为objectIDc.objectID是一个12字节的十六进制数(前4个字节为当前时间戳,接下来3个字节是机器ID,接下来的2个字节中是MongoDB的服务进程id,最后三个字节是简单的增量值) 2.String类型:(字符串,最常用,必须是有效的utf-8) 3.Boolean: (存储一个布尔值,True/False) 4.Integer:(整数可以是32位或64位,这取决于服务器) 5.Double:(存储浮点数) 6.Arrays:(数组或列表,多个值存储到一个键) 7.Object:(用于嵌入式的文档,即一个值为一个文档) 8.Null:(存储Null值) 9.Timestamp:(时间戳) 10.Date:(存储当前日期或时间的UNIX时间格式) MongoDB最基本命令: show databases; (查看已有数据库) use dataname; (选择数据库) show tables; (查看已有表(集合)) show collections; (查看已有表(集合)) db.createCollection('表名')(建表(集合)) db.集合名.drop()(删除集合) db.dropDatabase() (删除库) MongoDB的增 删 改操作: db.集合名.insert(document) (数据的添加) db.集合名.save(document) (如果存在就更新,不存在就添加) db.集合名.update(query,update,multi) (query:查询条件,类似于sql语句update中的where部分 update:修改操作符,类似于sql语句update的set部分 multi:可选,默认是false,表示只修改找到的第一条记录,值为true表示把满足条件的文档全部修改) db.集合名.remove(query) (删除数据,query为删除条件) MongoDB的查询操作: db.集合名.find({条件文档}) (查找所有的匹配数据) db.集合名.findOne({条件文档}) (只返回匹配的第一个数据) db.集合名.find().limit(number) (用于读取指定数量的文档) db.集合名.find().limit(number).skip(number) (用于跳过指定数量的文档查询指定数量的文档) db.集合名.find().sort({age:1/-1}) (参数为1为升序 参数为-1为降序) db.集合名.find({条件}).count() (用于统计·结果·集中文档条数) db.集合名.distinct('age') (对年龄进行去重) db.集合名.find({'age':{$exists:true/false}}) (查询年龄存在/不存在的数据) MongoDB中的比较符号: db.student.find({'age':{'$eq':20}}) ---->>>年龄等于20 {'age':{'$lt':20}} ---->>>年龄小于20 {'age':{'$gt':20}} ---->>>年龄大于20 {'age':{'$lte':20}} ---->>>年龄小于等于20 {'age':{'$gte':20}} ---->>>年龄大于等于20 {'age':{'$ne':20}} ---->>>年龄不等于20 {'age':{'$in':[20,30]}} ---->>>年龄在20-30范围内 包括20和30 {'age':{'$nin':[20,30]}} ---->>>年龄不在20-30范围内 {'$or':[{'age':20},{'name':'张三'}]} ---->>>查询年龄是20的和查询名字是张三的数据 ====================================================================================================================== python与MongoDB的交互操作: 1.导入 import pymongo 2.链接客户端 client = pymongo.MongoClient('localhost',27017) 3.获取要操作的数据库 db = client.数据库名 或 client['数据库名']4.获取集合collection = db.集合名 或 collection = db['集合名 '] 对MongoDB中的数据进行操作: 1.添加数据: s1={'name':'张三','age':26} s2=[{},{},{},{},{}] collection.insert_one(s1) ---->>>向集合中添加s1数据 collection.insert_many([{},{}]/s2) 2.更新数据: collection.update_one({'name':'张三'},{'$set':{'age':12}}) --->>>($set用于保存其他数据) collection.update_many({'name':'张三'},{'$set':{'age':12}}) --->>>(将所有名字是张三的人的年龄设置为12) 3.删除数据: collection.delete_one({'name':'张三'}) collection.delete_many({'age':{'$gte':20}}) 4.查询数据: collection.find() (查询全部 也可以设定查询条件 collection.find({'name':'张三'})) collection.find_one() collection.find({'name':{'$regex':'.*三.*'}}) --->>>查询姓名中包含 二 的数据(.*三 属于正则表达式 表示三前面是任意字符任意长度) 5.对查询结果进行排序操作: collection.find().sort('age',pymongo.ASCENDING) ---->>>升序排列 (返回的是一个列表,可以进行遍历显示能好看点) collection.find().sort('age',pymongo.DESCENDING) ----->>>降序排列collection.find().sort('age',pymongo.ASCENDING).limit(3) --->>>显示升序排列后前三条数据 collection.find().sort('age',pymongo.ASCENDING).skip(3).limit(3) --->>>查询升序排列后跳过前三条数据再查询之后三条数据