本页代码可以在这里下载。
1.文件存储
(1)txt文本存储
r: 以只读方式打开文件。
rb:以二进制只读方式打开一个文件。
r+:以读写方式打开一个文件。
rb+:以二进制读写方式打开一个文件。
w:以写入方式打开一个文件。
wb:以二进制写入方式打开一个文件。
w+:以读写方式打开一个文件。
wb+:以二进制读写格式打开一个文件。
a:以追加方式打开一个文件。
ab:以二进制追加方式打开一个文件。
a+:以读写方式打开一个文件,追加。
ab+:以二进制追加方式打开一个文件。
(2)JSON文件存储
JSON全称JavaScript Object Notation 即JavaScript对象标记,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。
读取JSON
# json test -> read str = ''' [{ "name": "Sniper", "gender": "male" },{ "name": "spider", "gender": "male" }] ''' data = json.loads(str) print(data) print(data[0]['name']) print(data[0].get('age'))
输出:
输出JSON:
# json test -> output to file str = ''' [{ "name": "Sniper", "gender": "male" },{ "name": "spider", "gender": "male" }] ''' with open('file/json/data.json', 'w') as file: file.write(json.dumps(str,ensure_ascii=False))
在文件中可以看到输出:
(3)CSV文件存储
全称 Comma-Separated Balues 即逗号分隔值或字符分割值,其文件以纯文本形式存储。
写入:
# csv test -> write with open('file/csv/data.csv', 'w') as f: writer = csv.writer(f, delimiter=' ') writer.writerow(['id', 'name', 'age']) writer.writerow(['10001', 'Mike', '20']) writer.writerows([['10002', 'Bob', '22'], ['10003', 'Jordan', '24']])
输出:
以字典的形式写入:
# csv test -> write with dic with open('file/csv/data.csv', 'w', newline='') as f: fieldnames = ['id', 'name', 'age'] writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerow({'id': '10004', 'name': 'Davie', 'age': '26'})
输出:
读取:
# csv test -> load file with open('file/csv/data.csv', 'r' ,encoding='utf-8') as f: reader = csv.reader(f) for row in reader: print(row)
输出:
2.数据库
(1)MongoDB存储
他是一种使用C++编写的一个非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象。
查询:
在这之前别忘了到计算机管理中把MongoDB服务打开(如果之前更改过手动的话)。
然后我们打开Robo 3T 我们这里使用以前做题库的时候的数据库,找一个关键字来查询。
# mongodb test -> read client = pymongo.MongoClient(host='localhost', port=27017) # connect to DB db = client.quiz # choose DB collection = db.quizzes # choose collection result = collection.find_one({'quiz': '我国历史上第一部编年体史书是?'}) # find data print(result)
发现可以查询出来:
比较符号:
符号 含义 示例
< 小于 {’age’: {‘<’: 20}}
> 大于 {’age’: {‘>’: 20}}
<e 小于等于 {’age’: {‘<e’: 20}}
>e 大于等于 {’age’: {‘>e’: 20}}
&ne 不等于 {’age’: {‘&ne’: 20}}
&in 在范围内 {’age’: {‘&in’: [20, 23]}}
&nin 不再范围内 {’age’: {‘&nin’: [20, 23]}}
另外,还可以进行正则匹配,例如查询名字以M开头的学生数据:
results = collection.find({’name’: {‘®ex’: ‘^M.*’}})
还有一些其他的功能符号,比如&exists 存在、&type 判断类型、&mod 模操作、&text 文本查询、&where 高级条件查询
插入数据:
调用collection.insert( )
可以以列表的形式插入多个值。
计数:
count = collection.find().count()
排序:
count = collection.find().sort(‘name’, pymongo.ASCENDING) 升序
count = collection.find().sort(‘name’, pymongo.DESCENDING) 降序
偏移:
count = collection.find().skip(2)忽略结果集的前两个元素
count = collection.find().limit(2) 只显示前两个元素
更新:
count = collection.update(collection ,newData)
还有updata_one() 、updata_many()方法。
删除:
count = collection.remove()
同样,还有remove_one() 和 remove_many()方法。
(2)Redis 存储
Redis是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持多种存储数据结构,使用也非常简单。
存取:
在这之前别忘了开启服务。
# Redis test redis = StrictRedis(host='localhost', port=6379, db=0, password='') redis.set('name', 'Bob') print(redis.get('name'))
运行结果:
同时在可视化界面中我们可以看到db0中增加了该数据。
键操作:
字符串操作:
列表操作:
集合操作:
有序集合操作:
散列操作:
.
0 条评论