如何将pandas Timestamp添加到sqlite3?

时间:2014-01-08 23:32:41

标签: python django sqlite pandas

我将Django定义为DateTimeField:

class test(models.Model):
     t = models.DateTimeField()

在pandas中,我的数据框为

a=DataFrame(date_range('2014-1-1','2014-1-2'))
type(a.ix[0,0])

显示:pandas.tslib.Timestamp

当我尝试通过以下方式插入数据时:

stmt="insert into dry_powder_test('t')  values(?)"
cnx = sqlite3.connect(db_path)
cnx.executemany(stmt, a.to_records(index=False).tolist())
cnx.commit()

没有错误。但是

 test.objects.get(pk=1).t 

给我空洞的结果。虽然在db中我实际上看到了

(u'project_test', 't', 1388534400000000000L)

我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

你的django模型有一个字段t,类型为django.model.DateTimeField,你保存到数据库pandas.data_range,它从1970年开始被隐含转换为毫秒。

  1. 为什么你混合使用Django和Pandas,而你没有关于Python的基础知识?
  2. 为什么您的班级名称不以大写字母开头?
  3. 为什么要编写原始sql而不是使用Django模型?
  4. ---编辑--- 你好,再次,

    我已经解决了你的问题。我用django orm创建了有效的模型,所以:

    [1]: a1 = test()
    
    [2]: a1.t
    
    [3]: a1.t = datetime.datetime(2012, 2, 26, 13, 0, 0, 775217)
    

    然后我检查了DB:

    $./manage.py dbshell
    sqlite> select * from polls_test;
    1|1388534400000000000
    2|1388620800000000000
    3|2012-02-26 13:00:00.775217