![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5yYwMWOkZjYwMjMkNzNiZjZmVzNlRTYyEWOxkjMyQDN58CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
作者:JiekeXu
2017年畢業于某大學院校,從事于資料庫運維行業,一個熱愛Python的DBA
個人公衆号:JiekeXu之路
Python從網站上抓取的資料為了可以重複利用,一般都會存儲下來,存儲方式最簡單的會選擇存儲到文本檔案,常見的有方式TXT、CSV、EXCEL等,還有一種方式是将資料存儲到資料庫,這樣也友善管理,常見的關系型資料庫有SQLite3、MySQL,非關系型資料庫有Redis、MongoDB。那麼,這裡就簡單說明怎麼樣将資料存儲到SQLite3。
假設已經将資料抓取下來并已寫入json檔案,為了友善本次演練,這裡是我自己寫的json,防止json寫錯,這裡給出一個位址可自動檢測json格式并将其格式化“http://www.bejson.com/”。下圖是格式化後的Json格式圖。
{
"data":
[
{"id":1,"name":"wangtao","age":21},{"id":2,"name":"lisi","age":22},{"id":3,"name":"wangyang","age":23},{"id":4,"name":"liyang","age":25},{"id":5,"name":"xiaowu","age":25}
]
}
(Json格式化工具)
簡單的資料庫直接使用SQLite3比較友善,而且Python自帶SQLite3子產品直接導入即可,前面文章《基于Python的SQLite基礎知識學習》已經介紹了SQLite3的使用。
進入主題,取Json檔案裡的資料,因為是檔案流,就需要用到json庫裡的load方法,把Json對象轉化為Python對象,逐行導入sql語句。
sql ="insert into student(id,name,age) values(%d,'%s',%d)"% (line['id'],line['name'],line['age'])
具體步驟
1、逐行讀取目前路徑下的json檔案
with open("data.json",’r’) as f:
data = json.load(f)
2、對資料進行解析
假設Json為以上data格式,則可通過data[‘id’]和data[‘name’] 、data[‘age’]分别擷取id和name、age字段。
3、資料入庫
利用python内置的sqlite3子產品實作對sqlite資料庫的操作;注意sql語句中使用了格式化輸出的占位符%s和%d來表示将要插入的變量,其中%s需要加引号''。
# -*- conding:utf-8 -*-
#導入sqlite3庫檔案
import sqlite3
import json
#資料庫存在時,直接連接配接;不存在時,建立相應資料庫,此時目前目錄下可以找到對應的資料庫檔案。
conn = sqlite3.connect("customers.db")
print ('Opened database successfully')
#建立CNAME表
conn.execute('''CREATE TABLE CNAME
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL);''')
print ('Table created successfully')
#向表中插入記錄
with open("data.json",’r’) as f:
data = json.load(f)
for line in data[‘data’]:
#注意sql語句中使用了格式化輸出的占位符%s和%d來表示将要插入的變量,其中%s需要加引号''
sql = "insert into cname(name,id,age) values('%s',%d,%d)" % (line['name'],line['id'],line['age'])
conn.execute(sql)
conn.commit()
#關閉資料庫連接配接
conn.close()
4、查詢和确認資料![]()
json 插入資料_使用python将資料存入SQLite3資料庫
可以通過sql語句查詢和确認資料入庫情況。
conn = sqlite3.connect("customers.db")
cursor = conn.execute("select id,name,age from cname")
for row in cursor:
print ('ID = ', row[0],' NAME = ',row[1],' AGE = ', row[2])
print ('Operation done successfully')
conn.close()
至此,便将Json格式的資料存儲到SQLite3資料庫中了,可以進行後續的分析和操作了,下面将代碼總結一下,修改便可使用。
環境說明:基于Ubuntu16.04的Python3.5.2版本;關于SQLite3就介紹這麼多了,各位小夥伴們下次見哦!
作者好文推薦:基于Python的SQLite基礎知識學習
Python的愛好者社群曆史文章大合集:
2018年Python愛好者社群曆史文章合集(作者篇)
福利:文末掃碼關注公衆号,“Python愛好者社群”,開始學習Python課程:
關注後在公衆号内回複“ 課程 ”即可擷取:
小編的轉行入職資料科學(資料分析挖掘/機器學習方向)【最新免費】
小編的Python的入門免費視訊課程!
小編的Python的快速上手matplotlib可視化庫!
崔老師爬蟲實戰案例免費學習視訊。
陳老師資料分析報告擴充制作免費學習視訊。
玩轉大資料分析!Spark2.X + Python精華實戰課程免費學習視訊。
愛我請給我好看!