背景介绍
本项目旨在实现一个小型本地数据库,支持读取、写入及查询包含数字和日期的文本数据。通过Python的pandas库和SQLite数据库,该项目可独立运行,无需依赖远程服务或复杂框架,适合中级以下开发需求。
思路分析
- 数据读取与存储:
将输入文本文件中的数字与日期字段转换为可操作的数据结构(如datetime对象),并存储到SQLite数据库中。
使用pandas读取文件,自动识别并处理格式化日期字段。 - 查询功能:
通过pandas筛选符合条件的记录,并输出结果,支持按日期范围查询。
示例:输入查询参数时,自动筛选符合条件的行并显示结果。 - 数据库设计:
使用SQLite存储结构化数据,支持快速读写与高效查询。
代码实现
import pandas as pd
import sqlite3
def store_data_to_sqlite(data_path, db_path, table_name):
"""存储数据到SQLite数据库"""
# 读取文本文件内容
df = pd.read_csv(data_path, header=None, names=[f'{col}_{date}' for col in data_path.split(':')])
# 将日期字段转换为datetime对象
df['date'] = pd.to_datetime(df['date'])
# 创建SQLite数据库
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
cursor.execute(f"CREATE TABLE IF NOT EXISTS {table_name} (id INTEGER PRIMARY KEY, date TEXT, value TEXT)")
# 插入数据
for idx, row in df.iterrows():
# 格式化日期字段
formatted_date = row['date'].strftime("%Y-%m-%d")
cursor.execute(f"INSERT INTO {table_name} VALUES (?,?,?)", (row['id'], formatted_date, row['value']))
# 保存数据库
conn.commit()
conn.close()
def query_data_query(query):
"""查询数据库并返回结果"""
query_df = pd.read_sql_query(query, conn)
result = query_df.to_string(index=False)
print("查询结果:\n", result)
return result
def main():
# 示例输入路径
example_path = 'example.txt'
db_path = 'example.db'
# 存储示例数据
store_data_to_sqlite(example_path, db_path, 'example_table')
# 查询示例数据
query_text = "WHERE date >= '2023-01-01'"
result = query_data_query(query_text)
总结
本项目实现了文件读写与数据库存储功能,利用Python的pandas处理数据,结合SQLite数据库优化了数据存储与查询性能。通过完整的代码示例,展示了从读取文件到查询数据库的完整流程,确保了数据的结构化与高效处理。项目可在本地运行,无需依赖远程服务,符合中级以下开发需求。