2012-02-07 46 views
2

与Python编码,我想要插入数据库端处理这样的时刻:Python + sqlalchemy:如何在数据库端处理timedelta?

time = func.now()-datetime.timedelta(days=100) 

time = func.current_timestamp()-datetime.timedelta(days=100) 

但不知何故,电话打不通,看到警告:

sqlalchemy\engine\default.py:330: Warning: Truncated incorrect DOUBLE value: '1970-01-04 00:00:00' 

有什么办法让它变直?谢谢。

================================

我想更新TIMESTAMP列 'date_buy'在'Purchase'表中,使用datetime.datetime.now()来获取python中的更新时间,我希望在数据库中完成此操作,这意味着我更喜欢func.now():

time = func.current_timestamp()-datetime.timedelta(days=100) 
# time = datetime.datetime.now()-datetime.timedelta(days=100) 
session.execute(update(Purchase).values(date_buy=time).where(Purchase.c.id == 11)) 

=================================

解决了。感谢布赖恩和他的岗位: http://groups.google.com/group/sqlalchemy/browse_thread/thread/a67d4f179e01b98a/ee688a0b8a999f52?hl=en&lnk=gst&q=date_add#ee688a0b8a999f52

+0

如果您找到解决方案,请接受解决问题的答案。请执行此操作以完成系统的工作流程。 – Nilesh 2012-02-09 05:07:55

回答

1

的警告是

Warning: Truncated incorrect DOUBLE value: '1970-01-04 00:00:00'

意味着它的截断你的数据。请检查您要存储时间对象的字段类型。 它表示您正在尝试将DOUBLE值与datetime值一起存储。

如果这不能解决问题,那么就给出一些代码示例,以便我们了解您要做什么。

+1

请看看编辑过的帖子。我不确定这是否是将该领域的操作留给MySQL而不是python的正确方式。谢谢! – avemax 2012-02-08 06:01:23

+0

date_buy的类型是什么?请提供购买类别。 – Nilesh 2012-02-08 06:29:56

+0

CURRENTTIMESTAMP是double值,您尝试从CURRENTTIMESTAMP减去datetime。只需使用相同类型的操作数即可执行操作。你可以使用'converttimestamp(func.now() - datetime.timedelta(days = 100))' – Nilesh 2012-02-08 06:33:59