用Python存储数据的实用姿势

你以为男朋友是取款机,结果是十台机器,有九台半是存款机。

如果仅仅是临时获取一些数据,保存到本地csv文件后,用Excel等软件处理即可。

但长期积累数据后,会发现文件多到难以管理,数据库就是为此而生。

不少人听到数据库就怕,主要有3个原因;

  1. 不少教程一上来就介绍原理,各种概念、模式、范式;
  2. 入门难,常被推荐MySQL,从下载安装,到建库写数据,还得装管理工具;
  3. 操作门槛高,得掌握SQL语言才能操作数据。

如何能把数据库的使用门槛再降低些?

  • 首先,分析工作主要在Python,而非数据库本身,数据库承担存储作用;
  • 其次,数据库的读写场景分离,分析时读数据,获取数据时写数据,互不影响;
  • 最后,只考虑个人或小团队快速作战,不考虑大规模共享数据平台搭建。

这么一来,我们就可以选择一套适合快速作战的技术组合了。

  • sqlite3:一种小型嵌入式数据库,整个数据库就一个文件,包含在Python标准模块中。
  • django:著名Python一站式Web框架,包含MVCORM等设计模式实现,利用ORM模块可用Python对象操作数据库,减少SQL使用。
  • TablePlus:一个功能和性能都强大的数据库管理工具,支持大部分关系和非关系型主流数据库。

用Sqlite3操作数据库

使用程序操作数据库的基本流程包括4步:

  1. 创建数据库链接,比如网络或本地文件;
  2. 获取Cursor对象,用于执行SQL和获取数据;
  3. 提交数据修改到数据库,完成事务;
  4. 关闭链接。

sqlite3数据库不需要安装即可以使用,基本使用如下:

import pathlib
import sqlite3

SQL_CREATE_TABLE = 'create table article \
                    (id varchar(32) primary key, title varchar(64), url varchar(256))'
SQL_INSERT_DATA = 'insert into article (id, title, url) values \
                  ("1", "办公自动化系列", "https://mp.weixin.qq.com/s/JFEASRL17bnr6fRJfezixA")'
path = list(pathlib.Path.cwd().parents)[1].joinpath('data/dataproc/003storage')
db_path = path.joinpath('test.sqlite3')
# 打开数据库,并获取一个
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 查看当前数据库有哪些表
cursor.execute('select name from sqlite_master where type="table" order by name')
tables = cursor.fetchall()
table_names = [t[0] for t in tables]
if 'article' not in table_names:
    # 创建数据库,插入一条数据
    cursor.execute(SQL_CREATE_TABLE)
    cursor.execute(SQL_INSERT_DATA)
    cursor.close()
    conn.commit() # 提交数据修改
# 查询数据
cursor = conn.cursor()
cursor.execute('select * from article where id=?', ('1',))
values = cursor.fetchall()
print(values)
cursor.close()
conn.close()

上面的案例中:

  • 首先定义了数据库位置和名称,其实就是一个文件,可以用任何名字和扩展名。
  • 其次获取一个数据库链接Connection,负责和数据库通信,如提交数据修改,用完需要关闭。
  • 然后从链接中获取Cursor对象,用execute等方法执行SQL语句。
  • 最后,通过Cursorfetchall等方法获取SQL执行结果数据。

其中,最关键两个对象是ConnectionCursor,操作数据靠SQL语句。

常用的SQL语句主要有2类:

  • 结构类对象操作:如数据库、表、索引,用CREATE创建、用ALTER修改、用DROP删除;
  • 表数据相关操作:用INSERT插入、用UPDATE修改、用DELETE删除、用SELECT查询。

其中,SELECT使用频率最高,也是功能最丰富、结构最复杂的主要语句

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值