Python - ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

 
Vista:
sin imagen de perfil
Val: 54
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por CARLOS (19 intervenciones) el 17/03/2021 10:00:10
Buenos días, foreros:

Trato de actualizar un campo datetime en una tabla sql remota con la fecha/hora actual del equipo cliente pero solo consigo actualizar la fecha, dejando la hora como '00:00:00'.
Este es mi codigo python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/python
# coding=utf-8
 
import socket
import signal
import datetime
import time
import ConfigParser
from subprocess import call
 
# File config
config = ConfigParser.ConfigParser()
config.read('/home/pi/rfid/myrfid.conf')
archivo = "/home/pi/rfid/myrfid.conf"
ip_server = config.get('SERVER', 'ip_server')
 
from uuid import getnode as get_mac
mac = '%012X' % get_mac()
 
def lastlog():
    fecha = time.strftime("%Y-%m-%d %H:%M:%S")
    call("sudo curl 'http://"+ ip_server +"/lastlog.php?date='"+ fecha +"'&mac="+ mac +"'", shell=True)
 
lastlog()

Y este el PHP alojado en el servidor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// lastlog.php
 
// Parametros de base de datos
$mysql_servidor = "localhost";
$mysql_base = "database";
$mysql_usuario = "nameuser";
$mysql_clave = "password";
 
$date = htmlspecialchars($_GET["date"],ENT_QUOTES);
$mac = htmlspecialchars($_GET["mac"],ENT_QUOTES);
 
// Valida que esten presente algunos parametros
mysql_connect($mysql_servidor,$mysql_usuario,$mysql_clave) or die("Imposible conectarse al servidor.");
mysql_select_db($mysql_base) or die("Imposible abrir Base de datos");
 
$sql = "UPDATE table SET updated_at = '$date' WHERE mac = '$mac'";
mysql_query($sql);

¿Donde estoy fallando..?

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por joel (901 intervenciones) el 17/03/2021 12:15:54
Hola Carlos, recuerda que las funciones mysql_ ya no existen en php7...

En principio se ve todo correcto... si haces un
1
echo $sql;
en el PHP que te muestra?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por CARLOS (19 intervenciones) el 17/03/2021 14:05:25
Pues parece que el problema lo da el espacio entre fecha y hora. esto es lo que devuelve el echo...

1
UPDATE table SET updated_at = '2021-03-17' WHERE mac = 'B827EB73CCCF' curl: (6) Could not resolve host: 13:53
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por joel (901 intervenciones) el 17/03/2021 15:51:48
Hola Carlos, pero este update es correcto, no?
En la base de datos, que valor te queda en el campo updated_at?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por CARLOS (19 intervenciones) el 17/03/2021 16:21:54
Me deja este valor:
1
21-03-17 00:00:00
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por joel (901 intervenciones) el 17/03/2021 17:26:21
Ah, eso es porque el campo de la base de datos es un datetime y tu le estas enviando un date solamente, sin el time.
Puedes cambiar el tipo de cambio en la base de datos, o enviarle una hora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por CARLOS (19 intervenciones) el 17/03/2021 17:52:20
Pero yo necesito actualizar tanto la fecha como la hora. Por eso lo envio en el formato AA-MM-DD HH:MM:SS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por joel (901 intervenciones) el 17/03/2021 19:43:09
Si, pero en la variable del php $date solo tienes la fecha, sin la hora... es muy extraño, porque desde el python se la estas enviando bien, pero en el php solo se queda con la fecha sin la hora... muy extraño.

Si en el php haces
1
echo $_GET["date"];
que te devuelve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por CARLOS (19 intervenciones) el 17/03/2021 20:36:50
Por eso creo que el espacio que hay entre fecha y hora esta tumbando la instruccion.

UPDATE table SET updated_at = '2021-03-17' WHERE mac = 'B827EB73CCCF' curl: (6) Could not resolve host: 13:53

Fijate que me devuelve la hora despues del mensaje de error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por joel (901 intervenciones) el 18/03/2021 07:39:44
Si, pero le faltan los segundos, no?

Lo que veo que sobran unas comillas, aunque no creo que tenga nada que ver... en vez de así:
1
call("sudo curl 'http://"+ ip_server +"/lastlog.php?date='"+ fecha +"'&mac="+ mac +"'", shell=True)
Creo que tendría que ser así:
1
call("sudo curl 'http://"+ip_server+"/lastlog.php?date="+fecha+"&mac="+mac+"'", shell=True)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

ACTUALIZAR REGISTRO EN TABLA SQL REMOTA

Publicado por CARLOS (19 intervenciones) el 18/03/2021 15:18:23
Parece que ya funciona... Solo he rellenado el espacio entre fecha y hora con un guion y listo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar