使用python创建的sqlite-shm和sqlite-wal文件从json生成sqlite

时间:2013-11-01 13:40:56

标签: sqlite core-data python-2.7 mogenerator

我试图从json文件填充我的iOS sqlite数据库。我用python编写了一个脚本来执行此操作,该脚本读取json文件和coredata Model.xcdatamodeld文件。使用mogenerator,它创建必要的h和m文件,并将信息写入sqlite文件,如下所示(下面是生成sqlite文件的代码的一部分)

psc = NSPersistentStoreCoordinator.alloc().initWithManagedObjectModel_(mom)
psc_option = {
    NSMigratePersistentStoresAutomaticallyOption : True,
    NSInferMappingModelAutomaticallyOption : True,
}
psc.addPersistentStoreWithType_configuration_URL_options_error_(NSSQLiteStoreType, None, dataURL, psc_option, None)
moc = NSManagedObjectContext.new()
moc.setPersistentStoreCoordinator_(psc)

以前一切都工作,但在我升级到Maverick之后,输出文件生成了2个额外的文件(.sqlite-shm和.sqlite-wal)。输出sqlite文件似乎是空的(即使脚本成功解释了coredata文件和json文件)。我只是想知道是否有人知道那些文件是什么?以及可能导致这种情况的任何建议? (我怀疑在保存期间某些行为必定已经改变,但我不确定)。

1 个答案:

答案 0 :(得分:2)

Apple已将默认日记帐模式更改为WAL模式(SQLite Write-Ahead Logging),如Core Data and iOS 7: Different behavior of persistent store

中所述

passing the associated SQLite pragma options to NSPersistentStoreCordinator.完成 寻找Configuring a SQLite Store’s Save Behavior

或许这篇网络文章可能更清晰: Problems with Core Data Migration Manager and journal_mode WAL