gpt4 book ai didi

Python:删除 x 天前的 mySQL 行

转载 作者:行者123 更新时间:2023-11-29 21:26:17 25 4
gpt4 key购买 nike

我使用的是树莓派,其 rasbpian wheezy 发行版 headless 运行。我目前有一个运行 python 脚本的 cronjob,将当前温度和日期时间放入 mySQL 数据库中(表:tempLog,属性:日期时间、温度浮点(5,2))。

我想删除 5 天(num 天是任意)旧的行,但我在 python 中无法完成此操作。这是代码,不长。

import os
import time
import datetime
import glob
import MySQLdb
from time import strftime
from datetime import timedelta
from datetime import date

# Variables for MySQL
db = MySQLdb.connect(host="localhost", user="root",passwd="password", db="temp_database")
cur = db.cursor()
del_basedate = datetime.datetime.today() - timedelta(1)

# DATE_SUB(NOW() , INTERVAL 1 DAY)
try:
cur.execute("DELETE FROM tempLog WHERE datetime.date.day = del_basedate")
print "Delete successful"

except:
print "An error occured in: deleteRows.py"

finally:
cur.close()
db.close()

我必须执行sever import from,因为它不断抛出对象不存在的错误。

最佳答案

您需要了解编码上下文:

del_basedate = datetime.datetime.today() - timedelta(1)
^^----python variable
    cur.execute("DELETE FROM tempLog WHERE datetime.date.day = del_basedate")
text string with the letters "d", "e", "l", "_", etc... --- ^^^

Python 并不神奇,它不会在字符串中翻找以查看该字符串中的任何文本是否看起来像 python 变量。因此,您实际上是在告诉数据库将 datetime.date.day 与某些未知/未定义的 del_basedate 字段进行比较。

尝试

    cur.execute("DELETE FROM tempLog WHERE datetime.date.day = '" +  del_basedate + "'")
^^^^^^^^^^^^^^^^^^

注意字符串中的额外引号。如果没有它们,您将与 = 2016-02-18 进行比较,这是一个数学运算,并由数据库解析/执行为 = 1996

关于Python:删除 x 天前的 mySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35491325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com