Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Jassim Alhatem
20,883 Points¿Algo mal con la consulta y el filtrado de sqlalchemy?
No sé qué estoy haciendo mal. Vi el video dos veces, leí la documentación y sigo atrapado. Estoy atrapado en la tarea 1.
from sqlalchemy import create_engine, Column, Integer, Cadena
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
motor = create_engine('sqlite:///películas.db', eco=False)
Sesión = sessionmaker(vincular=motor)
sesión = Sesión()
Base = declarative_base()
class Película(Base):
__tablename__ = 'películas'
id = Column(Integer, primary_key=Verdadero)
movie_title = Column(Cadena)
género = Column(Cadena)
# Escribe tu código a continuación
romance_movies = sesión.query(Película).filter_by(Película.género==romance)
para película en romance_movies:
print(película)
1 Respuesta
Chris Freeman
68,469 puntosEstás muy cerca. El verificador de desafío quiere genre= en lugar de Movie.genre==y "Romance" en lugar de "romance"
Nota la diferencia en los casos a continuación (de la documentación). Uno usa filter, el otro usa filter_by:
# filtrar resultados, que se logra con filter_by(), que usa argumentos de palabra clave:
sql
>>> para name, en sesión.query(Usuario.name).\
... filter_by(fullname='Ed Jones'):
... print(name)
ed
# …o filter(), que usa construcciones de lenguaje de expresión SQL más flexibles.
# Estos te permiten usar operadores regulares de Python con los atributos de nivel de clase en tu clase mapeada:
sql
>>> para name, en sesión.query(Usuario.name).\
... filtro(Usuario.fullname=='Ed Jones'):
... print(name)
ed
Vuelve si necesitas más ayuda. ¡Buena suerte!
Jassim Alhatem
20,883 PointsMuchas gracias, Chris, eres un salvador. Pensé que filter y filter_by eran lo mismo porque cuando el desafío devolvió un "error", el mensaje decía "usa filter o filter_by" y lo entendí como cualquiera de los dos.
Chris Freeman
68,469 puntosChris Freeman
68,469 puntosLo que no sé es por qué el verificador permite ambos
filteryfilter_bycomo se encuentra en la expresión regularfilter[_by]*, pero sí mantiene permite elMovie.genreformato permitido al usarfilter. Señalando para obtener comentarios de los desarrolladores.