python数据储存_五种使用python储存数据的方式
在python編程開(kāi)發(fā)中,總是不可避免的遇到數(shù)據(jù)儲(chǔ)存的問(wèn)題,下面就介紹python與幾種數(shù)據(jù)儲(chǔ)存方式交互的方法。
json文件
json是一種輕量級(jí)的數(shù)據(jù)交換格式。采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示數(shù)據(jù)。層次結(jié)構(gòu)簡(jiǎn)潔而清晰,易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。
最主要的是,通過(guò)json這個(gè)包可以很方便的解決無(wú)論是py2還是py3中的編碼問(wèn)題,json的內(nèi)容結(jié)構(gòu)也近似于python中的字典和列表,操作起來(lái)特別方便。
[python]view plain copy
import json
# 此時(shí)有一個(gè)json文件,結(jié)構(gòu)大概是 [{},{},{}...] 打開(kāi)這個(gè)文件
# 使用json load讀取文件內(nèi)容,然后可以直接用列表或者字典的方式去操作con這個(gè)變量
con = json.loads(content)
# 那么如何儲(chǔ)存為json文件呢?
# 使用dumps將列表序列化并且轉(zhuǎn)換為unicode編碼,儲(chǔ)存的時(shí)候,就可以存你最喜歡的utf-8了
lis = [{},{},{}...]
data = json.dumps(lis, ensure_ascii=False)
f.write(data.encode('utf-8'))
csv文件
轉(zhuǎn)換為csv文件后,我們就可以直接用excel打開(kāi)拉圖表了
[python]view plain copy
import csv
# 打開(kāi)文件
with open(filename, 'w') as f:
writer = csv.writer(f) # 構(gòu)造寫(xiě)入器
data = ('1','2','3') # 填寫(xiě)三格
data = ('','','3') # 填寫(xiě)一格,前兩格空起來(lái)
data = ('1','') # 填寫(xiě)第一格,后面無(wú)論多少格都空起來(lái)
writer.writerow(data) # writerow每執(zhí)行一次,寫(xiě)入一行 注意其中的參數(shù)data需要是一個(gè)元組
# 注意,在windows中,打開(kāi)文件需要使用 with open(filename, 'w', newline='') as f: # 否則每寫(xiě)一行都會(huì)多一個(gè)空行 # 原因是 windows中換行符號(hào)是 \n\r ,csv庫(kù)中并沒(méi)有做特別的處理,所以會(huì)產(chǎn)生空行
MySQL數(shù)據(jù)庫(kù)
應(yīng)該是最常用的操作了,使用mysql的優(yōu)點(diǎn)是看數(shù)據(jù)真的很直觀(如果使用GUI程序的話)
[python]view plain copy
導(dǎo)入包略微不一樣
@python3
import pymysql
@python2
import MySQLdb
# 建立連接 注意數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)時(shí)數(shù)據(jù)的編碼
conn = MySQLdb.connect(host='localhost', port=3306, db='test',
user='root', passwd='', charset='utf8')
# 新建游標(biāo) 游標(biāo)操作sql語(yǔ)句
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對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)有改變的時(shí)候,使用commit()提交,否則不生效
conn.commit()
# 返回?cái)?shù)據(jù)到python,使用fetchone和fetchall從內(nèi)存中取數(shù)據(jù),取了一個(gè)清空一個(gè)
cur.execute('select * from students where id between 1 and 5')
result=cur.fetchone()
result=cur.fetchall()
# 最后記得關(guān)閉連接
cur.close()
conn.close()
Redis數(shù)據(jù)庫(kù)
優(yōu)點(diǎn)是方便,速度快,需要注意的是取出的數(shù)據(jù)是二進(jìn)制數(shù)據(jù),一般需要轉(zhuǎn)為字符串再操作。
操作大全: python-redis操作大全
[python]view plain copy
import redis
# 建立連接
client = redis.Redis(host='lcoalhost', port=6379)
# 操作數(shù)據(jù)
client.set('nums', [1,2,3,4,5])
result = client.get('name')
# 使用事務(wù)(避免失敗操作導(dǎo)致數(shù)據(jù)只操作了一半)
pipe = client.pipeline()
pipe.set('name', 'Jack')
pipe.execute()
Mongdb數(shù)據(jù)庫(kù)
優(yōu)點(diǎn)是不在乎數(shù)據(jù)結(jié)構(gòu),需要注意的是取出來(lái)的時(shí)候要寫(xiě)個(gè)腳本整理一下。
[python]view plain copy
import pymongo
# 建立連接 指定數(shù)據(jù)表
client = pymongo.MongoClient('localhost', 27017)
test1_db = client.test1
sheet_stu = db.stu
# 操作數(shù)據(jù)
info =
info_id = stu.insert_one(info).inserted_id
cur_list = [cur for cur in stu.find()]
count = stu.count()
總結(jié)
以上是生活随笔為你收集整理的python数据储存_五种使用python储存数据的方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: docker tag 删除images_
- 下一篇: eclipse全局搜索_Eclipse如