que quieren anular __cmp__
, __eq__
y __hash__
por lo que se puede hacer operaciones con el conjunto en un modelo declarativo SQLAlchemy Base. ¿Esto causará algún conflicto con la Implementación de la Base declarativa?Anulación __cmp__, __eq__ y __hash__ para SQLAlchemy declarativa Base
Respuesta
no. Funcionará bien.
Tal vez, dependiendo de la implementación de la función de comparación.
Usted tiene que tener cuidado al usar __eq__
o __cmp__
para comparar con el objeto other
, porque SQLAlchemy puede comparar su objeto con algunos símbolos como NEVER_SET
que no tienen el mismo tipo. Echar un vistazo a este método SQLAlchemy:
def get_all_pending(self, state, dict_):
if self.key in dict_:
current = dict_[self.key]
if current is not None:
ret = [(instance_state(current), current)]
else:
ret = [(None, None)]
if self.key in state.committed_state:
original = state.committed_state[self.key]
if original not in (NEVER_SET, PASSIVE_NO_RESULT, None) and \
original is not current:
ret.append((instance_state(original), original))
return ret
else:
return []
La línea original not in (NEVER_SET, PASSIVE_NO_RESULT, None)
puede generar un error si la comparación no comprueba la igualdad de los tipos primero, o de la existencia de los campos que se utilizan en la comparación
Como solución, debe tener en cuenta los diferentes tipos.
También evite anular __cmp__
y use rich comparison operators instead.
¡Buena captura! Esto es importante. –
- 1. SQLAlchemy extensión declarativa vs. elixir
- 2. Diccionario de etiquetas en SQLAlchemy declarativa?
- 3. Python: ¿Es esta una buena forma de anular __eq__ y __hash__?
- 4. SQLAlchemy: captador/definidor en la clase Mixin declarativa
- 5. ¿Invertir la definición de clase declarativa SQLAlchemy de la base de datos MySQL existente?
- 6. Cómo implementar una buena función __hash__ en python
- 7. Python 2 y Python 3 __cmp__
- 8. SQLAlchemy propiedad declarativa de join (atributo único, no todo el objeto)
- 9. Índice de columnas múltiples al usar la extensión ORM declarativa de sqlalchemy
- 10. herencia de C# y anulación de propiedades base
- 11. ¿Diferencia entre programación declarativa y procesal?
- 12. Ayuda con Anulación y Herencia
- 13. SQLAlchemy y UnicodeDecodeError
- 14. servicio OSGi declarativa condicional vinculante
- 15. Python: 'objeto en la lista de' controles y rebosadero '__cmp__'
- 16. Sqlalchemy: evitar la herencia múltiple y tener clase base abstracta
- 17. SqlAlchemy y multiprocesamiento
- 18. ¿Cuál es el __hash__ predeterminado en python?
- 19. Sobrecarga, anulación y ocultación?
- 20. SQLAlchemy y columnas vacías
- 21. ¿Cómo se maneja __eq__ en Python y en qué orden?
- 22. Unir base de datos cruzada en sqlalchemy
- 23. SQLAlchemy y django, ¿está lista para producción?
- 24. ¿Por qué/Cuándo en Python hace `x == y` llamada` y .__ eq __ (x) `?
- 25. Los tipos que definen `__eq__` son insaciables?
- 26. SQLAlchemy y Postgresql: to_tsquery()
- 27. django y sqlalchemy
- 28. Interfaz de administración para SQLAlchemy?
- 29. SQLAlchemy y valores escalares
- 30. SQLAlchemy y paginación
Muchas gracias :) – mauzepeda
¿Puedes citar alguna documentación de SQLAlchemy que sugiera que esto estaría bien? – DuneBug
@DuneBug No veo por qué sería un problema. Sqlalchemy en sí mismo no anula esos métodos especiales para la base declarativa. – nosklo