Supprimer des entrées dans une base SQlite externe

Salut,

comme indiqué dans le titre, je souhaiterais pourvoir supprimer des entrées dans une base SQLite déclarée en plus de la base mySQL de SPIP.

Concrètement, pour le site d'une radio, il y a une base SQLite qui ne sert qu'à recevoir les titres joués à l'antenne. Pour éviter d’exploser le poids de la base, je souhaiterais supprimer les entrées qui ont plus de 2 mois par exemple.

J'ai vu la doc https://programmer.spip.net/Declarer-une-tache mais je ne vois pas bien comment m'y prendre pour intervenir sur la base externe...

Merci,

                     jean marie

Salut,

Au départ, Tenter de faire un petit form CVT et traiter via appel à la fonction delete de l’api spip

https://programmer.spip.net/sql_delete
sql_delete(‹ table ›, 'id_table = ’ . intval($id_table),‹ nom_du_connect ›);

Pour les dates passées de 2 mois en php ça serait qqc du genre:

sql_delete(‹ table ›, ‹ colonne_date < ’ . strtotime( ›-2 month’),‹ nom_du_connect ›);

On pourrait le faire en pure SQL, mais je doute que cela fonctionne sur sqlite…

sql_delete(‹ table ›, ‹ colonne_date < DATE_SUB(NOW(), INTERVAL 2 MONTH ›,‹ nom_du_connect ›);

Le mer. 2 sept. 2020 à 11:14, jeanmarie <jeanmarie.listes@cousumain.info> a écrit :

Salut,

comme indiqué dans le titre, je souhaiterais pourvoir supprimer des
entrées dans une base SQLite déclarée en plus de la base mySQL de SPIP.

Concrètement, pour le site d’une radio, il y a une base SQLite qui ne
sert qu’à recevoir les titres joués à l’antenne. Pour éviter d’exploser
le poids de la base, je souhaiterais supprimer les entrées qui ont plus
de 2 mois par exemple.

J’ai vu la doc https://programmer.spip.net/Declarer-une-tache mais je ne
vois pas bien comment m’y prendre pour intervenir sur la base externe…

Merci,

jean marie


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Merci pour ton retour.

J’avais commencé via le génie pour automatiser l’opération, donc j’ai testé avec sql_delete et ça donne dans monplugin_pipelines.php :

function monplugin_taches_generales_cron($taches_generales) {
$taches_generales[‹ titres ›] = 86400;
return $taches_generales;
}

Non, le cvt c’est juste pour tester la fonction.

le nom du connect c’est sans l’extension .php :slight_smile:

Pour la base externe il doit certainement pas s’appeler connect! (vu que c’est le connect par défaut de spip)

Le mer. 2 sept. 2020 à 17:40, jeanmarie <jeanmarie.listes@cousumain.info> a écrit :

Merci pour ton retour.

J’avais commencé via le génie pour automatiser l’opération, donc j’ai testé avec sql_delete et ça donne dans monplugin_pipelines.php :

function monplugin_taches_generales_cron($taches_generales) {
$taches_generales[‹ titres ›] = 86400;
return $taches_generales;
}

et dans /genie/titres.php :

function genie_titres_dist($t) {
sql_delete(‹ titres ›, ‹ played_at < ’ . strtotime( ›-2 month’),‹ connect.php ›);
}

mais j’ai une erreur SQL (« un problème technique (serveur SQL) empêche l’accès à cette partie du site ») quand j’exécute manuellement la tâche. Comment fait le génie pour savoir dans quelle base il doit intervenir ?

Passer par un CVT plutôt que par le génie permet de contourner le problème ?

jeanmarie

Le 02/09/2020 à 12:00, pierre laszczak a écrit :

Salut,

Au départ, Tenter de faire un petit form CVT et traiter via appel à la fonction delete de l’api spip

https://programmer.spip.net/sql_delete
sql_delete(‹ table ›, 'id_table = ’ . intval($id_table),‹ nom_du_connect ›);

Pour les dates passées de 2 mois en php ça serait qqc du genre:

sql_delete(‹ table ›, ‹ colonne_date < ’ . strtotime( ›-2 month’),‹ nom_du_connect ›);

On pourrait le faire en pure SQL, mais je doute que cela fonctionne sur sqlite…

sql_delete(‹ table ›, ‹ colonne_date < DATE_SUB(NOW(), INTERVAL 2 MONTH ›,‹ nom_du_connect ›);

Le mer. 2 sept. 2020 à 11:14, jeanmarie <jeanmarie.listes@cousumain.info> a écrit :

Salut,

comme indiqué dans le titre, je souhaiterais pourvoir supprimer des
entrées dans une base SQLite déclarée en plus de la base mySQL de SPIP.

Concrètement, pour le site d’une radio, il y a une base SQLite qui ne
sert qu’à recevoir les titres joués à l’antenne. Pour éviter d’exploser
le poids de la base, je souhaiterais supprimer les entrées qui ont plus
de 2 mois par exemple.

J’ai vu la doc https://programmer.spip.net/Declarer-une-tache mais je ne
vois pas bien comment m’y prendre pour intervenir sur la base externe…

Merci,

jean marie


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

A confirmer:

Pour le nom de la table il me semble qu’il faut spécifier le nom du préfix spip_ (soit spip_titre en suivant ton exemple)

Par la suite l’api sql spip remplace automatiquement le prefix de la table par celui déclarer dans le fichier de connexion.

Le mer. 2 sept. 2020 à 18:00, pierre laszczak <pierre.laszczak@gmail.com> a écrit :

Non, le cvt c’est juste pour tester la fonction.

le nom du connect c’est sans l’extension .php :slight_smile:

Pour la base externe il doit certainement pas s’appeler connect! (vu que c’est le connect par défaut de spip)

Le mer. 2 sept. 2020 à 17:40, jeanmarie <jeanmarie.listes@cousumain.info> a écrit :

Merci pour ton retour.

J’avais commencé via le génie pour automatiser l’opération, donc j’ai testé avec sql_delete et ça donne dans monplugin_pipelines.php :

function monplugin_taches_generales_cron($taches_generales) {
$taches_generales[‹ titres ›] = 86400;
return $taches_generales;
}

et dans /genie/titres.php :

function genie_titres_dist($t) {
sql_delete(‹ titres ›, ‹ played_at < ’ . strtotime( ›-2 month’),‹ connect.php ›);
}

mais j’ai une erreur SQL (« un problème technique (serveur SQL) empêche l’accès à cette partie du site ») quand j’exécute manuellement la tâche. Comment fait le génie pour savoir dans quelle base il doit intervenir ?

Passer par un CVT plutôt que par le génie permet de contourner le problème ?

jeanmarie

Le 02/09/2020 à 12:00, pierre laszczak a écrit :

Salut,

Au départ, Tenter de faire un petit form CVT et traiter via appel à la fonction delete de l’api spip

https://programmer.spip.net/sql_delete
sql_delete(‹ table ›, 'id_table = ’ . intval($id_table),‹ nom_du_connect ›);

Pour les dates passées de 2 mois en php ça serait qqc du genre:

sql_delete(‹ table ›, ‹ colonne_date < ’ . strtotime( ›-2 month’),‹ nom_du_connect ›);

On pourrait le faire en pure SQL, mais je doute que cela fonctionne sur sqlite…

sql_delete(‹ table ›, ‹ colonne_date < DATE_SUB(NOW(), INTERVAL 2 MONTH ›,‹ nom_du_connect ›);

Le mer. 2 sept. 2020 à 11:14, jeanmarie <jeanmarie.listes@cousumain.info> a écrit :

Salut,

comme indiqué dans le titre, je souhaiterais pourvoir supprimer des
entrées dans une base SQLite déclarée en plus de la base mySQL de SPIP.

Concrètement, pour le site d’une radio, il y a une base SQLite qui ne
sert qu’à recevoir les titres joués à l’antenne. Pour éviter d’exploser
le poids de la base, je souhaiterais supprimer les entrées qui ont plus
de 2 mois par exemple.

J’ai vu la doc https://programmer.spip.net/Declarer-une-tache mais je ne
vois pas bien comment m’y prendre pour intervenir sur la base externe…

Merci,

jean marie


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc