1. 程式人生 > >python儲存數據的方式

python儲存數據的方式

with python2 應該 enc 沒有 原創文章 set 變量 fetchall

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儲存數據的方式