primes = []
thisNumIsPrime = lambda x: x % i
def isPrime(num):
for i in range(1,num):
primes= filter(thisNumIsPrime,range(num,-1,-1))
print('primes', primes)
Como dice en el link que paso Logica Miau, filter no devuelve una lista, sino un iterable. En este caso un filter object. Un iterable puede ser convertido en tupla con tuple(filter(thisNumIsPrime,range(num,-1,-1)))
También lo puedes hacer una lista con list(filter(thisNumIsPrime,range(num,-1,-1))
Te recomiendo hecharle una mirada al link que te pasó Logica Miau
Hola buenos días, estoy intentado sacar una query que me obtenga los id que no estén en una tabla que subo en mi tabla, en la que almaceno las incidencias y que empiecen por '49' ,es decir, me falta solo decirle que me de las que empiecen por 49, me podríais hecha una mano ?
SELECT * FROM averias WHERE id NOT IN ( SELECT id FROM datos_subido where id like '49%' )
esta query no me muestra las que empiezan por 49
anda que soy muy bobo y no me acerde que se usa having para filtrar los datos obtenidos despues del not in having id like '1465%';
la query sería asi, SELECT * FROM averias WHERE id NOT IN ( SELECT id FROM datos_subido where id like '49%' ) having id like '49%' si alguien se le ocurre una mejor forma de hacer lo que digo,
@MauricioContreras en mysql, perdona no lo comenté
SELECT * FROM averias WHERE id NOT IN ( SELECT id FROM datos_subido ) HAVING id LIKE '49%' , esta query es la que me da los datos que estoy buscando en cuestión
@RobertoAlonsoPepónSanchez pues muy bien, sin embargo, yo reemplazaria el uso de like por substring. Suponiendo que el campo id sea de tipo cadena.
Que de hecho debe serlo para que uses like.
Pero bueno, la cosa está en que ya tienes la consulta que funciona. Lo demás es optimización, y todo dependerá de la cardinalidad de los índices usados en ambos casos.
Hola, es la primera vez que hago una app en android y tengo dudas sobre como conectarme a una base de datos en sql server. Esta base de datos ya la tengo creada. pero me esta dando problemas con: network error ioexception: failed to connect to/192.168.1.37 port 1433 fron ;; port 51182: connect failed: etimeout (connection timed out). He buscado ese error en internet para ver si habia gente igual y añadiendo desde sql server configuration manager la red en habilitado y el puerto 1433 a windows de entrada y salida manualmente, sigo sin poder conectarme con la base de datos
@x-rw Ocurre que filter() no te devuelve lo que tú creías. No devuelve una lista, sino un iterador. Lo que tienes por tanto en la variable primes no lo puedes ver con un simple print() sino que tienes que iterar por él. O convertirlo en lista: print(list(primes))
Aparte de eso, el código tiene otros muchos errores. Entre ellos, no es correcta la forma en la que intentas determinar si un número es o no es primo
@x-rw Aqui tienes una implementación que funciona. Estudiala y pregunta lo que no entiendas
def isPrime(n):
if n < 4:
return True
for i in range(2,int(n**.5)+1):
if n%i == 0:
return False
return True
primos_menores_de_100 = filter(isPrime, range(100))
print(list(primos_menores_de_100))
En todo caso, ya que estás trabajando con Android, lo tuyo es usar una API para consumir tu DB, y esta API debería ser pública, es decir, expuesta a internet
@Fernando No están en la misma subred. La conexión no es posible, pues ambas IPs son subredes privadas y los routers no pueden pasar tráfico de una a otra
@Fernando Necesitas de verdad que la base de datos esté en un servidor separada del teléfono? Te lo digo porque en android perfectamente puedes tener una base de datos sql asociada con la aplicación, y te ahorras de servidores, apis y configuraciones de red
@Fernando yo estoy trabajando con ASP y entity framework y cada vez que tengo que hacer un cambio de cualquier cosa lo hago en cuestión de 10 minutos... :)
Entiendo. Pero hacer que la app hable directamente con la base de datos implica que, una de dos: (1) la app y la bd están en la misma subred (lo que quita toda la utlidad a tener un dispositivo móvil, si no lo puedes mover fuera de esa red), o (2) la BD tiene su IP y puerto públicos, expuestos al mundo, para que la app pueda conectar "desde fuera", lo que es altamente inseguro pues expones a la BD a ataques del exterior
y por eso lo que deberías hacer es colocar un servidor intermedio. El servidor sí expone su IP y puerto, y una API HTTP, y "por detrás" habla con la BD. Servidor y BD estarían en la misma red, y la app puede estar ya fuera
@Fernando Tengo un proyecto de una Todo list, que tiene lo básico, si quieres te lo paso, aunque tengo que cambiar algunas cositas. Me enseñaron en la empresa donde estoy.
@Fernando Sí, la app tendría que conectar usando HTTP con el servidor de la API rest, y enviarle peticione http que indiquen lo que quiere hacer, que la API convetiría a comandos SQL
es.stackoverflow.com/questions/443763/… @abulafia, ya me está dando dolor de cabeza esto... Eso que pone no son llamadas reales a las funciones no??? Osea, en python no se puede llamar a una función sin los paréntesis, no?
A ver si me estoy liando yo y lo voy a liar a él jaja
@Fernando si quieres ver, esto solo tiene un select, pero tiene todo el esquema de Entity Framework montado para trabajar con mysql: we.tl/t-ksVaYEPIaa
@Fernando Tienes el mismo problema que con sql server, esa API está escuchando en "localhost", que es la propia máquina Windows. No puedes conectar con ella sino desde la propia máquina Windows.
Tienes que configurar la API para que escuche en la interfaz 0.0.0.0 en vez de "localhost"
pero aparte de eso, tu máquina Windows tiene que tener una IP que sea accesible desde el teléfono. Para pruebas puedes usar ngrok, que hace que tu servidor privado tenga "mágicamente" un nombre público. Pero ese nombre no lo puedes elegir, cambia cada vez que lo lanzas, y no es muy estable. Es sólo para pruebas
@Fernando Pero postman te funciona porque lo estás ejecutando en la misma máquina en la que tienes la API funcionando. Eso es lo que significa "localhost" ("esta misma máquina")
Intenta dede el teléfono conectar usando un avegador a localhost:puerto/help. Entiendo que no debería funcionarte
porque en el teléfono "localhost" significará "el propio teléfono"
por eso te decía que la API no debe estar escuchando en "localhost" sino en un nombre público, para que sea accesible desde el teléfono
@Trauma Las que tú hayas programado, no? O hablas de otra cosa?
yo no sé que API es esa que has hecho en menos de media hora y que ni siquiera sabes lo que hace :-) Así que entiendo que ha sido un "botón mágico" de algún framework que te la ha creado automáticamente.
Si funciona como cabría esperar, esa API estará escuchando en un cierto puerto esperando peticiones HTTP. Esas peticiones las puedes enviar desde un navegador, desde postman, desde un teléfono, desde un script python... no importa con tal de que: 1) Siga el protocolo HTTP, y 2) Use las urls apropiadas que la API ha expuesto, y envíe los datos en el JSON que la API espera
y la parte 2) es la que no sé cómo va. No sé qué URLs serán las que expone esa API (las cuales seguramente dependerán incluso de la estructura de tu base de datos), ni el formato del JSON que intercambies con ella (que dependerá también de tu base de datos)
en cualquier caso, la misión de la API es recibir tu petición HTTP, en base a ella realizar una consulta a sql server, y devolverte a tí los resultados usando HTTP y probablemente recodificados en JSON
¿Por qué querrías tener todo en un mismo archivo, mezclado, cuando puedes tener archivo con su extensión, sus funciones y sus llamadas completamente funcionales? pues bueno, xd el último proyecto que me queda es en React, suerte que lo propuso mi compi y no tengo que meterle mucha mano.
@PabloLozano diría que toque un poco de Spring, pero mentiría porque no sabía lo que estaba haciendo, sabiendo lo básico del desarrollo web es muy fácil entrar a Angular, en 1 o 2 horas ya puedes empezar a desarrollar cosas guays
@AQMR no soy pablo, pero está muy chulo xD
Aunque creo que se me ha bugeado porque esto no deja de dar vueltas