从MySQL语句中获取结果并存储在Python列表中并检查条件

2024-09-30 23:46:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python列表“table_list”,它有MySQL数据表的名称。我需要将第一个数据表中的“start_time”字段值转换为datetime后存储在另一个列表“file_sTimeList”中

from datetime import datetime, timedelta

sq = """SELECT start_time FROM %s""" % (table_list[0])

cursor.execute(sq)
result = cursor.fetchall()
file_sTimeList = []
for row in result:
    file_sTime = f'{row[0]:%Y-%m-%d %H:%M:%S%z}'
    file_sTimeList.append(file_sTime)

# print("file_sTime: ", file_sTimeList)

然后我得到当前服务器时间-24小时时间

# get current server time
tz_PP = pytz.timezone('Asia/Phnom_Penh')
serverTime = datetime.now(tz_PP).strftime("%H:%M:%S")
print("serverTime: ", serverTime)



# get 24 hours  -  current server time
st_24hrs = datetime.now(tz_PP) - timedelta(hours=24)
serverTime_24hrs = st_24hrs.strftime('%Y-%m-%d %H:%M:%S')
print("serverTime_24hrs: ", serverTime_24hrs)

最后,我检查了我之前列表“file_sTimeList”中的每一项,如果超过24小时,则删除数据

# Clear DB all records , if exceed 24hrs
for st in file_sTimeList:
    if serverTime_24hrs > st:

        print("Exceed 24 hours")

        try:
            import datetime

            for r in range(len(table_list)):
                sql_1 = f"""DELETE FROM %s WHERE start_time = '{datetime.datetime.strptime(file_sTime, '%Y-%m-%d %H:%M:%S')}'""" \
                        % (table_list[r])
                cursor.execute(sql_1)
            print("DB clean")

        except Exception as e:
            print("Error: ", e)
            raise e


    else:
        print("24 time")

然而,这并没有给我正确的输出。我做错了什么? 感谢您的帮助。谢谢


Tags: in列表fordatetimetimetablestartcursor
1条回答
网友
1楼 · 发布于 2024-09-30 23:46:40

如果为查询中的每个元素创建一个datetime对象,而不是一个f字符串,会怎么样

from datetime import datetime, timedelta

sq = """SELECT start_time FROM %s""" % (table_list[0])

cursor.execute(sq)
result = cursor.fetchall()
file_sTimeList = []
for row in result:
    # Create a datetime instead of having a string
    file_sTime = datetime.strptime(f'{row[0]:%Y-%m-%d %H:%M:%S%z}')
    file_sTimeList.append(file_sTime)

经过这一修改,它应该会起作用

相关问题 更多 >