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



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

到目前为止,我一直在使用Python来做到这一点,并且它一直运行良好。唯一不起作用的位是插入日期。我知道核心数据以纪元格式存储日期,所以我目前通过 Python 插入它们,如下所示:

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

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

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

例如我可以调用插入数据的方法,如下所示:

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

与 Objective-C 及其冗长的方法调用相比:

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

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

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

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

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

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

因为Core Data不打算成为sqlite的ORM,所以它不能 读取任意 SQLite 架构。相反,你不应该依赖 能够使用其他SQLite工具读取Core Data的sqlite数据存储; 架构是可能会更改的实现详细信息。

从 https://stackoverflow.com/a/524301/96338

最新更新