Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
SQLAlchemy - Cómo negar una expresión ANY

Estoy usando postgres y estoy tratando de obtener esta consulta sin procesar usando la expresión SQLAlchemy, pero no puedo:

 SELECT foo.id FROM foo WHERE NOT foo.id = ANY('{1,2,3}'::int[]);

Lo probé con la siguiente definición de tabla:

 from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class foo(Base): __tablename__ = 'foo' id = Column(Integer(), primary_key=True) name = Column(String(80), unique=True)

y ejecutando lo siguiente en IPython :

 In [57]: from sqlalchemy.sql.expression import any_, not_ In [58]: from sqlalchemy.dialects import postgresql In [59]: def compile_(where): ...: statement = select([foo.id, foo.name]).where(where) ...: return str(statement.compile(dialect=postgresql.dialect())) ...: In [60]: where1 = not_(foo.id == any_([1,2,3])) In [61]: compile_(where1) Out[61]: 'SELECT foo.id, foo.name \nFROM foo \nWHERE foo.id != ANY (%(param_1)s)'

Como puede ver, en lugar de obtener WHERE NOT foo.id != ANY(...) obtengo WHERE foo.id != ANY(...) .

NOTAS :

Conozco IN y NOT IN , pero no puedo usarlos debido a la longitud de other que es > 32767 y esto provoca un Error de InterfaceError debido a la cantidad de argumentos de enlace.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Parece que SQLAlchemy intenta ser demasiado inteligente. Puede ser más astuto que no usando NOT :

 where1 = foo.id != all_([1,2,3]))
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda