[英]Insert with Python into InfluxDb error: 'datetime.timedelta' object has no attribute 'total_seconds'
[英]Python 'datetime.timedelta' object has no attribute 'time' error
当我运行我的 py 脚本时,我收到以下错误:
Traceback (most recent call last):
File "report_monitor.py", line 17, in <module>
timedelta(hours=7).time())
AttributeError: 'datetime.timedelta' object has no attribute 'time'
代码如下:
#!/usr/bin/python
import time
import MySQLdb
import datetime
from datetime import timedelta
db =
MySQLdb.connect("localhost","root","password","DB")
cursor = db.cursor()
cursor.execute("SELECT * FROM reportPref WHERE lastDate LIKE '2015-11-
18%'")
records = cursor.fetchall()
for record in records:
rec = record[14] #index 14 is a datetime object. there is no problem here.
schedLogTime =
(datetime.datetime.combine(datetime.date(1,1,1),rec.time()) -
timedelta(hours=7).time())
print schedLogTime
db.close()
我错过了什么? 这让我发疯......!
Python 正在尝试这样做:
timedelta(hours=7).time()
...这是无效的,因为正如错误所示, timedelta
对象上没有time
方法这样的东西。 你可能想做的是:
(datetime.datetime.combine(datetime.date(1,1,1),rec.time()) -
timedelta(hours=7)).time()
...这将首先从datetime
减去timedelta
,然后获取生成的datetime
对象的time
。 (请注意与您的代码相比,右括号的移动。)
除了显而易见的,timedelta 对象没有那个方法, timedelta
不是时间,它是一个向量。 它给你时间上的差异。 这就是为什么它是时间增量(增量意味着类似于“变化”的东西)。
说“什么时间是 1 小时的持续时间”是没有意义的
如果您想减去 7 小时,只需执行以下操作:
timedeltaobj = datetime.timedelta(hours=7)
var = datetimeobj - timedeltaobj
这是日期时间模块文档中的一个方便的小图表
就您可能想要做的事情而言,Glibud 一针见血。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.