日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2-3.数据存储篇

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2-3.数据存储篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JSON

JSON,全稱為 JavaScript Object Notation, 也就是 JavaScript 對象標記,它通過對象和數組的組合來表
示數據,構造簡潔但是結構化程度非常高,是一種輕量級的數據交換格式。本節中,我們就來了解如何
利用 Python 保存數據到 JSON 文件。

w 寫, r 讀, a 追加;
最好是處理好數據一次寫入

import json import osdata = [{ 'name': ' 王偉 ', 'gender': ' 男 ', 'birthday': '1992-10-18' }]#文件名 filename = 'data.json'if os.path.exists(filename) is False:with open(filename, 'w', encoding='utf-8') as file:file.write(json.dumps(data, indent=2, ensure_ascii=False)) else:print('文件已存在')

CSV

CSV,全稱為 Comma-Separated Values,中文可以叫作逗號分隔值或字符分隔值,其文件以純文本形
式存儲表格數據。該文件是一個字符序列,可以由任意數目的記錄組成,記錄間以某種換行符分隔。每
條記錄由字段組成,字段間的分隔符是其他字符或字符串,最常見的是逗號或制表符。不過所有記錄都
有完全相同的字段序列,相當于一個結構化表的純文本形式。它比 Excel 文件更加簡潔,XLS 文本是電
子表格,它包含了文本、數值、公式和格式等內容,而 CSV 中不包含這些內容,就是特定字符分隔的純
文本,結構簡單清晰。所以,有時候用 CSV 來保存數據是比較方便的。本節中,我們來講解 Python 讀
取和寫入 CSV 文件的過程。

導包 import csv#單行寫入writerow with open('data.csv','w') as csvfile:#默認會有空行#fieldnames不想顯示空行加writer = csv.writer(csvfile,fieldnames=fieldnames)#表頭writer.writerow(['id', 'name', 'age'])#內容writer.writerow(['10001', 'Mike', 20])writer.writerow(['10002', 'Bob', 22])writer.writerow(['10003', 'Jordan', 21])writer.writerow(['10003', 'Jordan', 21])#多行寫入writerowsdata =[['10001', '鄧剛', 20], ['10002', '聶小雨', 22], ['10003', '李大毛', 21]]with open('data.csv', 'w',encoding='utf-8') as csvfile: writer = csv.writer(csvfile) #表頭writer.writerow(['id', 'name', 'age']) #內容writer.writerows(data)

保存Excel格式文件

from openpyxl import Workbook import random import pandas #pip install pandaswb = Workbook() ws = wd.create_sheet('表1',index=0) ws.append(['編號','名稱','年齡']) for i in range(10):id = str(i)name = ("大喬"+str(i))age = random.randint(18,30)ws.append([id,name,age])wb.save('xx.xlsx')

MySQL

關系型數據庫是基于關系模型的數據庫,而關系模型是通過二維表來保存的,所以它的存儲方式就是行
列組成的表,每一列是一個字段,每一行是一條記錄。表可以看作某個實體的集合,而實體之間存在聯
系,這就需要表與表之間的關聯關系來體現,如主鍵外鍵的關聯關系。多個表組成一個數據庫,也就是
關系型數據庫。
關系型數據庫有多種,如 SQLite、MySQL、Oracle、SQL Server、DB2 等

連接數據庫

import pymysql db = pymysql.connect(host='localhost',user='root', password='123456', port=3306) cursor = db.cursor() # 游標 cursor.execute('SELECT VERSION()') data = cursor.fetchone() print('Database version:', data) cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8") db.close()

創建數據表

import pymysql db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='spiders') cursor = db.cursor() sql = 'CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))' cursor.execute(sql) db.close()

插入數據

import pymysql id = '20220315' user = '菲菲' age = 20 db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='spiders') cursor = db.cursor() sql = 'INSERT INTO students(id, name, age) values(% s, % s, % s)' try:cursor.execute(sql, (id, user, age)) db.commit() except: db.rollback() db.close()

字典數據插入

import pymysql data = { 'id':'20220315', 'name': '菲菲', 'age': 20 } keys = ', '.join(data.keys()) values = ', '.join(['% s'] * len(data)) sql = 'INSERT INTO students({keys}) VALUES ({values})'.format( keys=keys, values=values) try:if cursor.execute(sql, tuple(data.values())): print('Successful') db.commit() except: print('Failed') db.rollback() db.close()

非關系型數據庫

MongoDB

MongoDB簡介
MongoDB 是由 C++ 語言編寫的非關系型數據庫,是一個基于分布式文件存儲的開源數據庫系統,其內
容存儲形式類似 JSON 對象,它的字段值可以包含其他文檔、數組及文檔數組,非常靈活。在這一節
中,我們就來看看 Python 3 下 MongoDB 的存儲操作。

連接 MongoDB
連接 MongoDB 時,我們需要使用 PyMongo 庫里面的 MongoClient。一般來說,傳入 MongoDB 的 IP
及端口即可,其中第一個參數為地址 host,第二個參數為端口 port(如果不給它傳遞參數,默認是
27017)

import pymongo # 如果是云服務的數據庫 用公網IP連接 client = pymongo.MongoClient(host='localhost', port=27017)#指定數據庫和表 db = client.test collection = db['students'] # 都可以import httpxdef get_data():res = httpx.get('網址')# 數據變字典格式items = res.json()item = items.get('Data')['Posts'] # 列表形式for i in item:if isinstance(i,dict):#插入數據collection.insert_one(i)get_data()

Elasticsearch 搜索引擎存儲 (性能優秀)

Elasticsearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于
RESTful web接口。Elasticsearch是用Java語言開發的,并作為Apache許可條款下的開放源碼發布,是
一種流行的企業級搜索引擎。Elasticsearch用于云計算中,能夠達到實時搜索,穩定,可靠,快速,安
裝使用方便
重要特性:
分布式的實時文件存儲,每個字段都被索引并可被搜索
實時分析的分布式搜索引擎
可以擴展到上百臺服務器,處理PB級結構化或非結構化數據
基本概念:
索引(indices)-------------------Databases 數據庫
類型(type)----------------------Table 數據表
文檔(Document)---------------Row 行
字段(Field)---------------------Columns 列
詳細說明:
要注意的是:Elasticsearch 本身就是分布式的,因此即便你只有一個節點,Elasticsearch 默認也會對你
的數據進行分片和副本操作,當你向集群添加新數據時,數據也會在新加入的節點中進行平衡

創建和刪除索引庫

from elasticsearch import Elasticsearch #建立鏈接 es = Elasticsearch() #創建庫 result = es.indices.create(index='庫名必須唯一不然報錯', ignore=400) #刪除庫 es.indices.delete(index='news') print(result)

添加數據

from elasticsearch import Elasticsearch es = Elasticsearch() data = { 'title':'路漫漫其修遠兮,吾將上下而求索', 'url':'網址'} es.index(index="xl",doc_type="test_type",id=2,body=data)

查詢數據

result = es.search(index="xl") for item in result["hits"]["hits"]:print(item["_source"])

插入多條數據

data = [{ 'title':'路漫漫其修遠兮,吾將上下而求索', 'url':'網址', },{ 'title':'路漫漫其修遠兮,吾將上下而求索','url':'網址',},{'title':'路漫漫其修遠兮,吾將上下而求索', 'url':'網址', },{'title':'路漫漫其修遠兮,吾將上下而求索', 'url':'網址',}]for da in data: es.index(index='my_index2',doc_type='text',body=da)

查詢

res = es.search(index="庫名") print(res)

過濾查詢

dsl = { 'query':{ 'match':{ 'title':'路漫漫 求索'} }}res1 = es.search(index='my_index2',body=dsl) print(res1)

總結

以上是生活随笔為你收集整理的2-3.数据存储篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。