数据存储

文件打开方式:
    r	 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    w	 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a	 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    rb	 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    wb	 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    ab	 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    r+	 打开一个文件用于读写。文件指针将会放在文件的开头。
    w+	 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a+	 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    rb+	 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    wb+	 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    ab+	 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。


用解析器解析出数据后,接下来就是存储数据了。
最简单的形式是直接保存为文本文件,如TXT、JSON、CSV等,还可以保存到数据库中,如关系型数据库MySql、非关系型数据库MongoDB、Redis等


========================================================================================================================

TXT文本存储
JSON文本存储
CSV文本存储
关系型数据库MySql
非关系型数据库MongoDB
非关系型数据库Redis


Txt文本存储:
优点:操作简单、兼容任何平台
缺点: 不利于检索

========================================================================================================================



JSON文件存储:   JavaScript对象标记,通过对象和数组的结合来表示数据
优点: 构造简洁
缺点: 构造化程度非常高
是一种轻量级的数据交换格式

1 对象和数组
在JavaScript语言中,一切都是对象,因此任何支持的类型都可以通过JSON表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊日常用的两种类型

·对象 :它在JavaScript中是使用花括号{}包裹起来的,数据结构为{key1:value1,key2:value2,...}的键值对结构。在面向对象的语言中,key为对象的属性
value为对象的值。键名可以使用证书和字符串来表示。值的类型可以是任意类型

·数组 :数组在JavaScript中是方括号[]包裹起来的内容,数据结构为["Java","JavaScript","vb",...]的索引结构,在JavaScript中,数组是一种比较
特殊的数据类型,它也可以像对象那样使用键值对,但还是索引用的多,同样值的类型可以是任意类型

所以,一个JSON对象可以写成如下格式:
str = [{
          "name":"hotz",
          "old":"20",
          "sex":"boy"
      },{
    "name":"Carrey",
    "old":"19",
    "sex":"20"}]

由中括号包围的就相当于列表类型,列表中每个元素可以是任意类型,以上它是字典类型
JSON可以由以上两种形式自由组合而成,可以无限次嵌套,结构清晰。是数据交换的极佳方式

注意: JSON的数据需要双引号来包围,不能使用单引号,因为如果使用就会报错。。。 报错提示:因为数据用单引号包围,千万注意JSON字符串的表示符需要用
双引号,否则loads()方法会解析失败


========================================================================================================================

CSV文件存储:
CSV(逗号分隔值文件格式)
优点:比Excel文件更加简洁、结构简单清晰、保存数据方便


CSV文件写入
CSV文件读取

========================================================================================================================

关系型数据库存储:
关系型数据库时基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表。每一列是一个字段,每一行是一条记录
表可以看做某个实体的集合,而实体之间存在联系。这就需要表与表之间的关联关系来体现,如主键外键的关联关系。多个表组成一个数据库,也就是关系型数据库
关系型数据库有很多中如: SQLine、MySQL、Oracle、SQL SERVER、DB2等

1.准备工作: 安装好mysql数据库,并且能让它运行。 安装pymysql

端口号是3306,而不是'3306' ,否则会报错: self.host_info = "socket %s:%d" % (self.host, self.port) TypeError: %d format: a number is required, not str



事务(ACID)的4个属性:
1. 原子性
2. 一致性
3. 隔离性
4. 持久性



插入数据: 插入方法无需改动,做成一个通用的方法,只需要传入一个动态变化的字典就好了 :
data = {
    'xxx':'xxx',
    'xxxx':'xxxx'
}



去重方式:如果数据存在则更新数据,如果数据不存在则插入数据。 (并不是重复的再把元数据保存一遍)


mysql -u root -p  连接数据库
show databases; 查看数据库
use spiders; 使用spiders表
desc spiders; # 查看spiders表里面的信息

========================================================================================================================

非关系型数据库存储:
NoSQL是基于键值对的,而且不需要经过SQL层的解析,数据之间没有耦合性,性能非常高
更详细的用法可以在MongoDB官方文档上找到:https://docs.mongodb.com/manual/reference/operator/query/
关于PyMongo的详细用法,可以参考官方文档:http://api.mongodb.com/python/current/api/pymongo/collection.html


非关系型数据库可分如下:
1.  键值存储数据库--- 代表有Redis,Voldemort和Oracle BDB等
2.  列存储数据库--- 代表有Cassandra、HBase 和 Riak等
3.  文档型数据库--- 代表有CouchDB 和 MongoDB等
4.  图形数据库--- 代表有Neo4J、infoGrid 和 Infinite Graph等




数据之间的嵌套关系对比:
关系型数据库---不方便 :
1. 需要提前创建表
2. 需要进行序列化操作才可以存储

非关系型数据库---避免上述这些麻烦,更简单方便



MongoDB 和 Redis 的数据存储操作介绍:
MongoDB: 由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统。内容存储形式类似JSON对象。
它的字段值可以包含其他文档、数组及文档数组,非常灵活。


准备:
1. 安装MongoDB 并启动服务
2. 安装好Python的PyMongo库

打开服务看一下MongoDB是否正在运行,如果运行就说明安装成功了



连接MongoDB:
需要使用PyMongo库里面的MongoClient,一般来说,传入MongoDB的IP及端口就好。
其中第一个参数为地址host,第二个参数为端口port (如果不传递端口参数,默认端口是27017)
import pymongo
client = pymongo.MongoClient(host='localhost',port=27107)


另外,MonClient的一个参数host还可以直接传入MongoDB的连接字符串,它以mongodb开头:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')


MongoDB的每个数据库包含许多集合(collection),它们类似于关系型数据库中的表


比较符号:
符号              含义              示例
$lt             小于              {'age':{'$lt':'20'}}
$gt             大于              {'age':{'$gt':'20'}}
$lte            小于等于            {'age':{'$lte':'20'}}
$gte            大于等于            {'age':{'$gte':'20'}}
$ne             不等于             {'age':{'$ne':'20'}}
$in             在范围内            {'age':{'$in':'20'}}
%nin            不再范围内           {'age':{'$nin':'20'}}



功能符号:
符号             含义                       示例                                                  示例含义
$regex          匹配正则表达式             {'name':{'$regex':'^H.*'}}                              name以H开头
$exists         属性是否存在              {'name':{'$exists':'True'}}                              name属性存在
$type           类型判断                  {'age':{'$type':'int'}}                                 age的类型为int
$mod            数字模操作               {'age':{'$mod':[5,0]}}                                    年龄模5余0
$text           文本查询                {'$text':{'$search':'Mike'}}                              text类型的属性包含Mike字符串
$where          高级条件查询            {'where':'obj,fans_count == obj.follows_count'}            自身粉丝数等于关注数

==========================================================================================================================
Redis存储:
Redis是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持多种存储数据结构,使用简单。


Redis优势:
1. 读写速度快
2. 丰富的数据类型
3. 原子性
4. 丰富的特性



准备工作:
安装Redis 和 redis.py库,如果要做数据导入/导出的话,还需要安装RedisDump。

配置Redis-Server,进入到根目录,输入命令:redis-server.exe redis.windows.conf,如果没有显示成功则按如下步骤依次输入:
1. redis-cli.exe
2. shutdown
3. exit
4. redis-server.exe redis.windows.conf

设置密码:
首先运行Redis-Server,双击redis-cli.exe
查看密码: config get requirepass
设置密码: config get requirepass 123456
验证密码: auth 123456
OK



Redis和StrictRedis :
redis.py库提供两个类Redis 和 StrictRedis 来实现Redis的命令操作
StrictRedis实现了绝大部分的官方的命令,参数也一一对应,比如set()方法就对应Redis命令的set方法。
Redis是StrictRedis的子类,它的主要功能是用于向后兼容旧版本库里的几个方法,为了兼容,它的方法做了改写,比如item()方法就将value和num参数的位置互换,这和Redis命令行的命令参数不一样

官方推荐使用StrictRedis。


用StriceRedis和ConnectRedis连接Redis,观察源码可以发现:
StrictRedis内其实就是用host和port等参数又构造了一个ConnectionPool,所以直接ConnectionPool当做参数传给StrictRedis也一样。




另外,ConnectionPool还支持通过URL来构建,URL的格式支持如下3种:
1. 创建Redis TCP连接: redis://[:password]@host:port/db          --- url = 'redis://[:123456]@localhost:6379/0'
2. Redis TCP+SSL连接: rediss://[:password]@host:port/db       --- pool = ConnectionPool.from_url(url)
3. RedisUNIX socket连接: unix://[:password]@/path/to/socket.sock?db=db    --- redis = StrictRedis(connection_pool=pool)
只需要构造上面任意一种URL即可,其中password部分如果有则可以写,没有则可以省略。

Redis文档: https://www.w3cschool.cn/redis/



RedisDump
RedisDump提供了强大的Redis数据的导入和导出功能。
首先安装好RedisDump
RedisDump提供了两个可执行命令:redis-dump 用于导出数据,redis-load用于导入数据
首先可以输入redis-dump-h 查看所有可选项
AI 代码审查Review工具 是一个旨在自动化代码审查流程的工具。它通过集成版本控制系统(如 GitHub 和 GitLab)的 Webhook,利用大型语言模型(LLM)对代码变更进行分析,并将审查意见反馈到相应的 Pull Request 或 Merge Request 中。此外,它还支持将审查结果通知到企业微信等通讯工具。 一个基于 LLM 的自动化代码审查助手。通过 GitHub/GitLab Webhook 监听 PR/MR 变更,调用 AI 分析代码,并将审查意见自动评论到 PR/MR,同时支持多种通知渠道。 主要功能 多平台支持: 集成 GitHub 和 GitLab Webhook,监听 Pull Request / Merge Request 事件。 智能审查模式: 详细审查 (/github_webhook, /gitlab_webhook): AI 对每个变更文件进行分析,旨在找出具体问题。审查意见会以结构化的形式(例如,定位到特定代码行、问题分类、严重程度、分析和建议)逐条评论到 PR/MR。AI 模型会输出 JSON 格式的分析结果,系统再将其转换为多条独立的评论。 通用审查 (/github_webhook_general, /gitlab_webhook_general): AI 对每个变更文件进行整体性分析,并为每个文件生成一个 Markdown 格式的总结性评论。 自动化流程: 自动将 AI 审查意见(详细模式下为多条,通用模式下为每个文件一条)发布到 PR/MR。 在所有文件审查完毕后,自动在 PR/MR 中发布一条总结性评论。 即便 AI 未发现任何值得报告的问题,也会发布相应的友好提示和总结评论。 异步处理审查任务,快速响应 Webhook。 通过 Redis 防止对同一 Commit 的重复审查。 灵活配置: 通过环境变量设置基
【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器的状态空间平均模型的建模策略。该方法通过数学建模手段对直流微电网系统进行精确的状态空间描述,并对其进行线性化处理,以便于系统稳定性分析与控制器设计。文中结合Matlab代码实现,展示了建模与仿真过程,有助于研究人员理解和复现相关技术,推动直流微电网系统的动态性能研究与工程应用。; 适合人群:具备电力电子、电力系统或自动化等相关背景,熟悉Matlab/Simulink仿真工具,从事新能源、微电网或智能电网研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网的动态建模方法;②学习DC-DC变换器在耦合条件下的状态空间平均建模技巧;③实现系统的线性化分析并支持后续控制器设计(如电压稳定控制、功率分配等);④为科研论文撰写、项目仿真验证提供技术支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐步实践建模流程,重点关注状态变量选取、平均化处理和线性化推导过程,同时可扩展应用于更复杂的直流微电网拓扑结构中,提升系统分析与设计能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值