python儲存數據的方式
python儲存數據的方式
2017年10月13日 23:38:10 Nick_Spider 閱讀數:59286 標簽: redis 數據庫 爬蟲 存儲 結構 更多
個人分類: 數據庫 爬蟲 python
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/weixin_39198406/article/details/78231430
在python編程開發中,總是不可避免的遇到數據儲存的問題,下面就介紹python與幾種數據儲存方式交互的方法。
json文件
json是一種輕量級的數據交換格式。采用完全獨立於編程語言的文本格式來存儲和表示數據。層次結構簡潔而清晰,易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。
最主要的是,通過json這個包可以很方便的解決無論是py2還是py3中的編碼問題,json的內容結構也近似於python中的字典和列表,操作起來特別方便。
import json
# 此時有一個json文件,結構大概是 [{},{},{}...] 打開這個文件
# 使用json load讀取文件內容,然後可以直接用列表或者字典的方式去操作con這個變量
con = json.loads(content)
# 那麽如何儲存為json文件呢?
# 使用dumps將列表序列化並且轉換為unicode編碼,儲存的時候,就可以存你最喜歡的utf-8了
lis = [{},{},{}...]
data = json.dumps(lis, ensure_ascii=False)
f.write(data.encode(‘utf-8‘))
csv文件
轉換為csv文件後,我們就可以直接用excel打開拉圖表了
import csv
# 打開文件
with open(filename, ‘w‘) as f:
writer = csv.writer(f) # 構造寫入器
data = (‘1‘,‘2‘,‘3‘) # 填寫三格
data = (‘‘,‘‘,‘3‘) # 填寫一格,前兩格空起來
data = (‘1‘,‘‘) # 填寫第一格,後面無論多少格都空起來
writer.writerow(data) # writerow每執行一次,寫入一行 註意其中的參數data需要是一個元組
# 註意,在windows中,打開文件需要使用
with open(filename, ‘w‘, newline=‘‘) as f:
# 否則每寫一行都會多一個空行
# 原因是 windows中換行符號是 \n\r ,csv庫中並沒有做特別的處理,所以會產生空行
MySQL數據庫
應該是最常用的操作了,使用mysql的優點是看數據真的很直觀(如果使用GUI程序的話)
導入包略微不一樣
@python3
import pymysql
@python2
import MySQLdb
# 建立連接 註意數據庫寫入數據時數據的編碼
conn = MySQLdb.connect(host=‘localhost‘, port=3306, db=‘test‘,
user=‘root‘, passwd=‘‘, charset=‘utf8‘)
# 新建遊標 遊標操作sql語句
cur = conn.cursor()
result = cur.execute("insert into students(name) values(‘Jack‘)")
result = cur.execute("insert into students(name,age) values(%s,%s)", params)
# sql對數據庫數據有改變的時候,使用commit()提交,否則不生效
conn.commit()
# 返回數據到python,使用fetchone和fetchall從內存中取數據,取了一個清空一個
cur.execute(‘select * from students where id between 1 and 5‘)
result=cur.fetchone()
result=cur.fetchall()
# 最後記得關閉連接
cur.close()
conn.close()
Redis數據庫
優點是方便,速度快,需要註意的是取出的數據是二進制數據,一般需要轉為字符串再操作。
操作大全: python-redis操作大全
import redis
# 建立連接
client = redis.Redis(host=‘lcoalhost‘, port=6379)
# 操作數據
client.set(‘nums‘, [1,2,3,4,5])
result = client.get(‘name‘)
# 使用事務(避免失敗操作導致數據只操作了一半)
pipe = client.pipeline()
pipe.set(‘name‘, ‘Jack‘)
pipe.execute()
Mongdb數據庫
優點是不在乎數據結構,需要註意的是取出來的時候要寫個腳本整理一下。
import pymongo
# 建立連接 指定數據表
client = pymongo.MongoClient(‘localhost‘, 27017)
test1_db = client.test1
sheet_stu = db.stu
# 操作數據
info = {name:‘Jack‘,age:18}
info_id = stu.insert_one(info).inserted_id
cur_list = [cur for cur in stu.find()]
count = stu.count()
python儲存數據的方式