Python处理SQLite数据库文件的完整指南
本文详细介绍如何使用Python标准库sqlite3创建和操作SQLite数据库,并通过pandas库高效读取数据。涵盖从建立连接、建表插入数据到使用read_sql_query获取DataFrame的完整流程,解决大数据量处理效率问题,附带可视化工具推荐。
在项目分析过程中,遇到后缀为“.sqlite”的数据文件。由于此前较少接触此类格式,为了进行数据分析与处理,本文对如何使用Python打开并操作该文件进行了研究。
SQLite是一款广受欢迎的关系型数据库管理系统,因其轻量级特性,被众多应用程序广泛采用。
与CSV文件类似,SQLite将数据存储在单一文件中,便于分享。多种编程语言支持处理SQLite数据,Python亦在其中。
sqlite3是Python的标准库之一,专门用于处理SQLite数据库。
利用sqlite3模块创建和操作数据库文件。
本文涉及的SQL语句为基础内容,不影响阅读。如需深入了解,可参考:http://www.w3school.com.cn/sql/index.asp
接下来,演示如何使用sqlite3模块创建SQLite数据文件,并执行数据的读写操作。
主要操作步骤如下:
建立数据库连接,并创建数据库文件(即.sqlite文件)。
创建游标(cursor)对象。
创建数据表(table)。
向数据表中插入数据。
执行数据查询。
演示代码如下:
import sqlite3
with sqlite3.connect('test_database.sqlite') as con:
c = con.cursor()
c.execute('''CREATE TABLE test_table
(date text, city text, value real)''')
for table in c.execute("SELECT name FROM sqlite_master WHERE type='table'"):
print("Table", table[0])
c.execute('''INSERT INTO test_table VALUES
('2017-6-25', 'bj', 100)''')
c.execute('''INSERT INTO test_table VALUES
('2017-6-25', 'pydataroad', 150)''')
c.execute("SELECT * FROM test_table")
print(c.fetchall())
Table test_table
[('2017-6-25', 'bj', 100.0), ('2017-6-25', 'pydataroad', 150.0)]
关于SQLite数据库中数据的可视化预览,有多种工具可用。本文使用的是SQLite Studio,这是一款免费且无需安装的工具,下载即可使用。感兴趣的同学可参考以下链接:
https://sqlitestudio.pl/index.rvt?act=download
数据预览效果如下:


使用pandas库读取sqlite数据文件。
从上述代码运行结果可见,数据查询结果是一个由元组组成的列表。Python列表在进行后续数据处理与分析时可能不够便捷。假设数据库表格包含100万行或更多数据,通过列表循环遍历获取数据的效率较低。
此时,可以考虑使用pandas提供的函数从SQLite数据库文件中读取相关数据,并将其保存为DataFrame对象,以便后续更高效地处理。
Pandas提供了两个函数,均可读取后缀为“.sqlite”的数据文件信息。
read_sql()
read_sql_query()
import pandas as pd
with sqlite3.connect('test_database.sqlite') as con:
# read_sql_query和read_sql都能通过SQL语句从数据库文件中获取数据信息
df = pd.read_sql_query("SELECT * FROM test_table", con=con)
# df = pd.read_sql("SELECT * FROM test_table", con=con)
print(df.shape)
print(df.dtypes)
print(df.head())
(2, 3) date object city object value float64 dtype: object date city value 0 2017-6-25 bj 100.0 1 2017-6-25 pydataroad 150.0
以上关于Python读取和处理后缀为.sqlite数据文件的实例讲解到此结束,希望能对大家有所帮助,也欢迎支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









