[英]CoreData sqlite3 db - populating timestamp column with python script
我有一個由sqllite db支持的coredata模型。 我想用一些初始數據填充數據庫。
到目前為止,我一直在使用Python執行此操作,並且運行良好。 唯一無效的是插入日期。 我了解coredata以紀元格式存儲日期,因此我目前正在通過Python插入日期,如下所示:
time.mktime(datetime(2012, 7, 1, 12, 30, 30).timetuple())
但是,當通過coredata加載數據時,這不能給我正確的日期。 關於如何格式化日期以便通過coredata正確讀取的任何想法?
*注意:我意識到大多數人建議通過使用相同模型而不是使用Python腳本的小型應用程序來執行此操作,但是我發現Python語法對於構造和插入許多對象更為簡潔。
例如,我可以調用插入數據的方法,如下所示:
insertData(con, 1, 1, 'Data 1', 'Description')
vs Objective-C及其冗長的方法調用:
[self insertdata withCon:con id: 1 i2:1 val:@"Data 1", Desc:@"Description"];
Core Data似乎使用GMT作為參考日期(與NSDate
方法timeIntervalSinceReferenceDate
相同)而不是1970年1月1日作為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
las,不要這樣做。 我一直使用Python來填充sqlite數據庫並用Objective-C和Java讀取它們,但是CoreData是使用 sqlite的東西,但是它的使用方式可能會隨着時間而改變。
由於Core Data並非打算作為sqlite的ORM,因此它無法讀取任意sqlite模式。 相反,您不應該依賴於能夠使用其他sqlite工具讀取Core Data的sqlite數據存儲; 模式是可能更改的實現細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.