python - 从 MySQL 语句中获取结果并存储在 Python 列表中并检查条件
问题描述
我有一个 Python 列表“table_list”,其中包含 MySQL 数据表名称。我需要从第一个数据表中“start_time”字段值并在转换为日期时间后存储在另一个列表“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")
但是,这并没有给我正确的输出。我在这里做错了什么?任何帮助表示赞赏。谢谢。
解决方案
如果您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)
通过该修改,它应该可以工作。
推荐阅读
- python - 子进程标准输出解码字符串不适用于希腊字母
- javers - 从不同实例保存相同的通用提交对象
- java - 我无法保存整数
- javascript - 使用单个正则表达式仅提取函数名称(字符串值)
- sql - 如果在 case 语句中为 null,则将日期时间转换为字符串“待定”
- mysql - Heroku 重启与 Nodejs 重启不同
- javascript - 在 php 中回显 javascript 函数 - 在控制台中回显,但不运行 javascript 函数
- reactjs - ReactJS 应用程序使用 Kubernetes Ingress 显示白屏
- python - 如何从python列表中删除外引号?
- android - 更改微调器的颜色