暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 Python 将数据存入 SQLite3 数据库

原创 JiekeXu 2019-12-31
1447

Python 从网站上抓取的数据为了可以重复利用,一般都会存储下来,存储方式最简单的会选择存储到文本文件,常见的有方式 TXT、CSV、EXCEL等,还有一种方式是将数据存储到数据库,这样也方便管理,常见的关系型数据库有 SQLite3、MySQL、Oracle 等,非关系型数据库有 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}
 
]
 
}

image.png

简单的数据库直接使用 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)

image.png

2、对数据进行解析

假设Json为以上data格式,则可通过data[‘id’]和data[‘name’] 、data[‘age’]分别获取id和name、age字段。

3、数据入库

利用python内置的sqlite3模块实现对sqlite数据库的操作;注意sql语句中使用了格式化输出的占位符%s和%d来表示将要插入的变量,其中%s需要加引号’’。

#导入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')

image.png

向表中插入记录

 
              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()

image.png

4、查询和确认数据

可以通过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()

image.png

至此,便将 Json 格式的数据存储到 SQLite3 数据库中了,可以进行后续的分析和操作了,下面将代码总结一下,修改便可使用,如若图片看起来不方便,【JiekeXu_IT】公众号后台回复【SQLite3】获取本节源码。

image.png

环境说明:基于 Ubuntu16.04 的 Python3.5.2 版本;关于SQLite3 就介绍这么多了,各位小伙伴们下次见哦!

最新公众号二维码.jpg

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论