假设我们有个项目,每天计算统计结果,那么我们应该怎么存储这些数据呢?直接按天写到一个数据文件(txt,csv,xlsx,pickle)里面?
但是如果我们需要对历史数据进行一些对比分析,趋势分析这么办?直接把数据读进去又做一层统计吗?
这样虽然问题不大,但是我们打螺丝,虽然不一定找到最好的方法,但是总会有一种更好的办法,这里使用把每天统计到的数据存储在sqlite中,这样就可以很方便的用SQL提取任意口径的数据了。我们先了解下sqlite在python中的基本用法。
-
在对应的项目目录下,直接创建.db后缀的文件
-
python创建:数据库文件是users.db,如果文件不存在,会自动在当前目录创建
import sqlite3 conn = sqlite3.connect('users.db')
-
建表
cursor = conn.cursor() cursor.execute('create table users (id varchar(20) primary key, name varchar(20))') -
插入一条记录
cursor.execute("insert into users (id, name) values ('1', 'one')") -
批量插入
data = [('2', 'two'), ('3','three'),('4', 'four')] cursor.executemany('insert into users (id, name) VALUES (?,?)', data) -
修改
cursor.execute("update users set name='first' where id='1'") -
删除
cursor.execute("delete from users where id = '1'") -
提交事务、关闭游标、关闭连接
conn.commit() cursor.close() conn.close()
-
连接数据库
conn = sqlite3.connect('users.db') -
直接读取数据
data = pd.read_sql('select * from users', conn) -
直接写入数据
# df为pandas的dataframe对象数据 df.to_sql(name='users', con=conn, if_exists='replace',index = False)
建议我们平时直接使用pandas读和写sqlite数据库,只需几行就可实现数据的读写操作。
后记本项目使用sqlite的优势:
- 不需要像其他数据库,如mysql、pgsql那样要完成各种部署才能使用;
- 方便本地项目的迁移:直接复制整个项目文件(包含.db文件),数据库也轻松带走。



