创建触发器sys\u exec和python

2024-03-29 12:39:45 发布

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

我在/usr/esercizi/上的python是:

#!/usr/bin/python
import datetime
now = datetime.datetime.now()
aa = now.strftime("%Y-%d-%m %H:%M | %S")

out_file = open("/usr/esercizi/test.txt","w")
out_file.write("La data di oggi \n\n")
out_file.write(aa)
out_file.close()

出于测试目的,我喜欢从触发器调用它:

^{pr2}$

该表只有两列:id和valore。 每次更换阀门都应该运行复制在

我还提供:

chown mysql:mysql tre.py | and chmod 777 tre.py

查询OK,似乎表示没有语法错误 但是文件上没有发生任何事情:测试.txt在

我做错什么了?在


Tags: pyimporttxtdatetimebinusrmysqlout
2条回答

你的提议有严重的性能问题。(假设有人大容量插入1000行,它将创建1000行的python进程,并迅速关闭服务器。)下面是一个简单得多的方法,没有问题:(警告:未测试的伪代码)

CREATE TABLE log_table( datetime update_time, varchar() valore);

CREATE TRIGGER `notifica_cambiamenti` AFTER UPDATE ON `valore`
-> FOR EACH ROW BEGIN
->
-> insert into log_table(now(), NEW.valore);
-> END;
-> $$

现在,您可以创建一个异步作业(或cron作业),定期处理日志表并删除它看到的行:DELETE FROM log_table WHERE update_time < $LAST_ROW_SEEN。在

高级注意:在您需要每秒处理多个作业,或者在不每秒轮询数据库100次的情况下减少延迟之前,这都可以正常工作。在这种情况下,您不应该使用SQL数据库。使用一个真正的队列,如AMPQ、Redis/Resque、celeri等。客户端将把行插入SQL,然后将作业放入作业队列。你可以让许多工人同时处理工作。在

你的问题解决了,只要按照我为你的问题所做的。。。在

CREATE TABLE log_table( datetime update_time, varchar() valore);

我刚刚创建了上面的表,触发器将在其中存储更新的值。在

现在,我定义触发器如下。。在

^{pr2}$

相关问题 更多 >