Python - SELECT SQL CON PYTHON

   
Vista:

SELECT SQL CON PYTHON

Publicado por CARLOS (5 intervenciones) el 06/02/2018 12:40:50
Buenos días:

Estoy inmerso en una mejora de un proyecto de control de Accesos con Rfid que consiste en añadirle caducidad y franja horaria a los usuarios.

Entonces, dada la tabla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `usersrfid` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `empresa` varchar(30) NOT NULL,
  `nombre` varchar(25) NOT NULL,
  `apellido1` varchar(25) NOT NULL,
  `apellido2` varchar(25) NOT NULL,
  `nprod` int(6) NOT NULL,
  `serial1` varchar(10) NOT NULL,
  `serial2` varchar(10) NOT NULL,
  `rfid` varchar(8) NOT NULL,
  `devProfileId` int(2) NOT NULL DEFAULT '0',
  `HoraIni` time NOT NULL DEFAULT '12:00:00',
  `HoraEnd` time NOT NULL DEFAULT '16:00:00',
  `endDate` date NOT NULL DEFAULT '2035-12-31',
  `service` varchar(30) NOT NULL,
  PRIMARY KEY (`serial1`),
  UNIQUE KEY `serial` (`serial1`),
  KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=100010 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `usersrfid`
--
 
LOCK TABLES `usersrfid` WRITE;
/*!40000 ALTER TABLE `usersrfid` DISABLE KEYS */;
INSERT INTO `usersrfid` VALUES
(0,'SAMPLE','PROFILE','TYPE','0',59990,'4269959534','','0',0,'12:00:00','16:00:00','2035-12-31','Example'),
(1,'SAMPLE','PROFILE','TYPE','1',59991,'4269956318','','0',1,'12:00:00','16:00:00','2035-12-31','Example'),
(2,'SAMPLE','PROFILE','TYPE','2',59992,'4269939662','','0',2,'12:00:00','16:00:00','2035-12-31','Example'),
(3,'SAMPLE','PROFILE','TYPE','3',59993,'4269934878','','0',3,'12:00:00','16:00:00','2035-12-31','Example'),
(4,'SAMPLE','PROFILE','TYPE','4',59994,'4269958510','','0',4,'12:00:00','16:00:00','2035-12-31','Example'),
(5,'SAMPLE','PROFILE','TYPE','5',59995,'4269936206','','0',5,'12:00:00','16:00:00','2035-12-31','Example'),
(6,'SAMPLE','PROFILE','TYPE','6',59996,'4269935374','','0',6,'12:00:00','16:00:00','2035-12-31','Example'),
(7,'SAMPLE','PROFILE','TYPE','7',59997,'4269956046','','0',7,'12:00:00','16:00:00','2035-12-31','Example'),
(8,'SAMPLE','PROFILE','TYPE','8',59998,'4269960270','','0',8,'12:00:00','16:00:00','2035-12-31','Example'),
(9,'SAMPLE','PROFILE','TYPE','9',59999,'4269957054','','0',9,'12:00:00','16:00:00','2035-12-31','Example');
/*!40000 ALTER TABLE `usersrfid` ENABLE KEYS */;
UNLOCK TABLES;

Trato de hacer un SELECT desde Python que busque si existe un registro "Serial1" o "Serial2" cuyo campo endDate sea posterior a la fecha actual y siempre que la hora actual se encuentre en la franja horaria comprendida entre HoraIni y HoraEnd.

Tengo el siguiente codigo pero no acaba de funcionar y tampoco se si es lo correcto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# If we have the UID, continue to usersrfid
if status == MIFAREReader.MI_OK:
 
    temp0 = (hex(uid[0])).zfill(4)
    temp1 = (hex(uid[1])).zfill(4)
    temp2 = (hex(uid[2])).zfill(4)
    temp3 = (hex(uid[3])).zfill(4)
 
    temp = temp0 + temp1 + temp2 + temp3
 
    serial = temp.upper().replace("0X","")
    today = time.strftime("%Y-%m-%d", time.localtime())
 
    resultado = gmysql.cur.execute("""SELECT * FROM usersrfid WHERE serial1 = %s OR serial2 = %s""",(serial,serial,))
 
    # Print UID
    row = gmysql.cur.fetchone()
	if (resultado == 1 ):
        section = gmysql.cur.execute("""SELECT * FROM usersrfid WHERE serial1 = %s  OR serial2 = %s AND HoraIni < NOW() AND HoraEnd > NOW() AND endDate > %s""",(serial,serial,today,))
        if (section == 1):
 
            print "(Autorizado)"
            time.sleep(0.1)
 
        else:
 
            print "(Caducado)"
            time.sleep(0.1)
 
	else:
        print "(Denegado)"
        time.sleep(0.1)

Alguien me puede dar una idea...?
Gracias
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 Leonardo Daniel A.

SELECT SQL CON PYTHON

Publicado por Leonardo Daniel A. (21 intervenciones) el 07/02/2018 22:05:53
Hola, primero no se Python.. y no me gusta, jajaja pero en lo que busque todas las sentencias SQL Terminan con ;

ademas, no metas el SQL directo, mejor crea una variable y luego la imprimes, para ver si se formo bien.. y tienes mas versatibilidad a la hora de formar las sentencias sql, dependiendo de parametros ir agregando opciones a tu sentencia sql, opciones de where, opciones de group by, etc.

mSQL = """SELECT * FROM usersrfid WHERE serial1 = %s OR serial2 = %s"""
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