簡體   English   中英

CoreData sqlite3 db-使用python腳本填充時間戳列

[英]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數據存儲; 模式是可能更改的實現細節。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM