我想在 Python 2.7 中获取两个日期之间的时差,其中存储日期并从 MySQL 中检索日期。
运行以下代码:
import datetime
import time
from time import sleep
import MySQLdb as mdb
connection = mdb.connect('localhost', 'root', 'pwd', 'mydatabase');
cursor = connection.cursor()
TimeFormat = '%Y-%m-%d %H:%M:%S'
#Insert times and type of event into database
with connection:
#First event
Now=datetime.datetime.now()
Timewhen1=Now.strftime(TimeFormat)
print "Start time", Timewhen1
Type="1"
cursor.execute('INSERT INTO LogEvent (Timewhen, Type) VALUES (%s, %s)',(Timewhen1,Type))
sleep(1) #Real time will be unknown, seconds to days
#Second event
Now=datetime.datetime.now()
Timewhen2=Now.strftime(TimeFormat)
print "Stop time", Timewhen2
Type="0"
cursor.execute('INSERT INTO LogEvent (Timewhen, Type) VALUES (%s, %s)',(Timewhen2,Type))
#Get time difference
with connection:
cursor.execute("SELECT Timewhen FROM LogEvent ORDER BY ID DESC LIMIT 0,1")
result=cursor.fetchone()
cursor.execute("SELECT Timewhen FROM LogEvent ORDER BY ID DESC LIMIT 1,1")
result2=cursor.fetchone()
diff=result2-result
print "Diff", diff
得到以下结果:
TypeError:不支持的操作数类型 - :' tuple'和'元组'
result / result2的格式为(datetime.datetime(2017, 1, 27, 22, 25, 39),)
。
猜猜我用元组/字符串格式做错了什么。任何帮助表示赞赏!
答案 0 :(得分:1)
看起来cursor.fetchone()
返回记录,该记录显示为字段元组。
在你的情况下,你只有一个字段(Timewhen),所以你有一个元素的元组。
这样,要获取实际值,您需要从元组中提取此元素,因此diff = result2[0] - result[0]
应该可以正常工作。
答案 1 :(得分:0)
result
和result2
是表示从查询返回的整行的元组。在这种情况下,它们包含单个元素,因为您的查询只包含一列。您可以使用[]
运算符提取此值。 E.g:
result=cursor.fetchone()[0]