CoreData sqlite3 db - 使用python脚本填充时间戳列

时间:2012-07-07 13:30:25

标签: iphone python ios sqlite core-data

我有一个由sqllite数据库支持的coredata模型。我想用一些初始数据填充数据库。

到目前为止,我一直在使用Python来完成这项任务,并且一直运行良好。唯一不起作用的是插入日期。我理解coredata以epoch格式存储日期,所以我目前通过Python插入它们:

time.mktime(datetime(2012, 7, 1, 12, 30, 30).timetuple())

但是,这并没有给我通过coredata加载数据的正确日期。有关如何格式化日期的任何想法,以便通过coredata正确读取它?

*注意: 我意识到大多数人建议通过使用相同模型而不是使用Python脚本的小应用程序来实现这一点,但我发现Python语法更简洁,用于构造和插入大量对象。

E.g。 我可以调用插入这样的数据的方法:

insertData(con, 1, 1, 'Data 1', 'Description')

vs Objective-C及其冗长的方法调用:

[self insertdata withCon:con id: 1 i2:1 val:@"Data 1", Desc:@"Description"];

2 个答案:

答案 0 :(得分:2)

核心数据似乎使用2001年1月1日,GMT作为参考日期(与NSDate方法timeIntervalSinceReferenceDate相同)而不是1970年,作为Python中的mktime函数,所以你必须根据它来计算你的时间戳。

当然,这完全没有记录,我同意dpjanes' answer这种方法通常是一个坏主意。

如果你真的想要这样做,你可以在Python中构建一个合适的时间戳,如下所示:

import time
from datetime import datetime

ref = time.mktime(datetime(2001, 1, 1, 0, 0, 0).timetuple())
now = time.time() - ref

答案 1 :(得分:1)

唉,不要这样做。我一直使用Python来填充sqlite数据库并使用Objective-C和Java读取它们,但是CoreData是使用 sqlite的东西,但它如何使用它可能会随着时间而改变。

  

因为Core Data不是sqlite的ORM,所以它不能   读取任意sqlite架构。相反,你不应该依赖于存在   能够使用其他sqlite工具读取Core Data的sqlite数据存储;   架构是一个可能会改变的实现细节。

来自https://stackoverflow.com/a/524301/96338