Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在存储原始时间戳的同时更新重复行中的时间戳?_Python_Mysql_Date_Sql Update_Sql Insert - Fatal编程技术网

Python 如何在存储原始时间戳的同时更新重复行中的时间戳?

Python 如何在存储原始时间戳的同时更新重复行中的时间戳?,python,mysql,date,sql-update,sql-insert,Python,Mysql,Date,Sql Update,Sql Insert,我有一个python脚本,用于抓取网站并将值插入MySQL数据库。脚本在睡眠延迟循环中不断地抓取一个不断更新的网站。现在,有5列值(例如,dog、cat、mouse、lizard、snake)是从网站上抓取的,6列是python脚本将行插入数据库时添加的时间戳。我不想插入重复的行,但我希望保留原始时间戳以及更新的时间戳(如果存在重复)。数据库用户的一个重要指标是首次找到此行的时间,以及该行是否仍在被删除的网站上可用 例如:假设脚本在下午2:30插入(小猎犬、印花布、白老鼠、壁虎、python)。

我有一个python脚本,用于抓取网站并将值插入MySQL数据库。脚本在睡眠延迟循环中不断地抓取一个不断更新的网站。现在,有5列值(例如,dog、cat、mouse、lizard、snake)是从网站上抓取的,6列是python脚本将行插入数据库时添加的时间戳。我不想插入重复的行,但我希望保留原始时间戳以及更新的时间戳(如果存在重复)。数据库用户的一个重要指标是首次找到此行的时间,以及该行是否仍在被删除的网站上可用

例如:假设脚本在下午2:30插入(小猎犬、印花布、白老鼠、壁虎、python)。当循环在半小时内再次运行时,它会找到相同的行,但新的时间戳为3:00PM。最好的方法是什么,不插入重复记录,而是说明首次找到行与最后一次找到行之间30分钟的时间差?我在Python方面相当不错,但对MySQL的经验很少,所以我可能需要一些帮助。您认为我应该通过SQL查询将此功能放在脚本端还是数据库端?如果是这样,如何做到这一点

谢谢

我建议:

  • 有两个不同的时间戳列:一个用于存储创建记录的日期,另一个用于存储上次修改的日期。这可以在MySQL中使用默认值轻松完成,因此不需要从应用程序代码中管理这些列
  • 在所有其他列上创建唯一(或主键)约束,以便在处理新数据时可以使用重复键上的
    语法
设置:

create table mytable (
    dog varchar(50),
    cat varchar(50),
    mouse varchar(50),
    lizard varchar(50),
    snake varchar(50),
    created_at timestamp 
        default current_timestamp,
    modified_at timestamp 
        default current_timestamp 
        on update current_timestamp,
    primary key (dog, cat, mouse, lizard, snake)
);
示例
插入
/
更新
语句:

insert into mytable 
    (dog, cat, mouse, lizard, snake)
values(?, ?, ?, ?, ?)
on duplicate key update modified_at = current_timestamp

使列唯一,然后使用错误更新时插入来添加最新时间如果您的第一个时间戳字段
date\u INSERT
,您可以添加另一个字段
date\u UPDATE
@westonbushyager:您缺少查询的结尾(
…UPDATE dog=values(dog)