tmt*_*mts 2 python storage date
我正在做一个小宠物项目,我想根据日期存储数据,最好使用python.
要存储的数据基本上是活动日志,即您在某个日期为某些持续时间进行了一些活动.我希望每个日期的"活动"数量在0到100之间.
我想使用尽可能接近"标准"的方式存储数据.我对我应该使用的格式有点犹豫.
存储此类数据的好方法是什么,以及如何使用python(包括第三方库和/或服务)来完成?
编辑:我完全清楚有很多不同的方法可以实现这一点,我正在寻找的是最合适的方法.
首先,您希望在您的日期使用ISO 8601.这是一个明智的选择,因为它简单,排序正确,对世界任何地方的人都毫不含糊.

其次,我可能会将数据存储在JSON中.根据您的方法,它应该与pickle具有相同的简单性,但数据可用于其他语言的程序.顺便说一句,您不必担心文件中的特定表示,就像您不必担心pickle格式的复杂性一样.您的数据可以是任何可序列化的对象(列表,词典等).根据您描述的用例,您可能没有特别大的数据集.使用JSON甚至pickle,读取或写入存储的数据要简单得多.如果程序增长,使用SQL语句可能会更复杂.(另外,如果你需要在任何时候深入挖掘文件,JSON或多或少都是人类可读的.对我来说,使用相对较小的数据集时这是一个主要的优点.)
例如,我会做这样的事情:
import json
with open('file.dat','r') as f:
data = json.load(f)
Run Code Online (Sandbox Code Playgroud)
您的JSON将始终可由其他软件读取,包括非Python编写的内容.保存数据非常简单.
with open('file.dat','w') as f:
json.dump(data, f)
Run Code Online (Sandbox Code Playgroud)
只需使用 sqlite3 并将其存储为时间戳。这就是您遇到(和开发)的应用程序的 90%(可能被夸大了)如何存储他们以后可能需要报告的数据(日志文件等内容除外)
import sqlite3,time
db = sqlite3.connect("my_database.sql") #you can put whatever ... created if not exist
conn = db.cursor()
conn.execute("CREATE TABLE IF NOT EXISTS Activities (timestamp int, name text);")
def AddActivity(activityName):
conn.execute("INSERT INTO Activities (timestamp,name) VALUES (?,?)",(time.time(),activityName))
db.commit()
def GetAllActivitiesOnDate(month,day,year):
start_time = time.mktime((year,month,day,0,0,0,0,0,0))
end_time = time.mktime((year,month,day,23,59,0,0,0,0)) #use 1 for last argument if you live somewhere with dst
conn.execute("SELECT * FROM Activities WHERE timestamp > ? AND timestamp < ?",(start_time,end_time))
return conn.fetchall()
Run Code Online (Sandbox Code Playgroud)
那么你会做类似的事情
AddActivity("Jumping Jacks")
time.sleep(10)
AddActivity("Push Ups")
import datetime
today = datetime.datetime.now()
activities = GetAllActivitiesOnDate(today.month,today.day,today.year)
print "Found %d Entries"%len(activities)
for activity in activities:
print "Activity %s @ %s"%(activity[1],time.strftime("%x %X",
time.gmtime(int(activity[0]))))
Run Code Online (Sandbox Code Playgroud)
这种类型的存储具有高度可扩展性,并且易于准确查询您需要的方式……并且 sqlite 包含在 Python 中,并且具有简单明了的界面和应用程序。它可以很好地扩展,如果你达到了不能扩展的程度,用更高端的 DB 替换它很简单
| 归档时间: |
|
| 查看次数: |
5430 次 |
| 最近记录: |