Estoy usando YAML y SQLAlchemy. Definí mi objeto, y puedo usar YAML para imprimir eso muy bien. Sin embargo, cuando intento utilizar YAML en el objeto devuelto por una consulta SQLAlchemy, falla con el error can't pickle int objects
. Imprimí la instancia devuelta desde SQLAlchemy, y muestra el tipo correcto. Voy a dejar que el código hable por:No se puede extraer el error de objeto int cuando el objeto proviene de SQLAlchemy?
class HashPointer(Base):
__tablename__ = 'hash_pointers'
id = Column(Integer, primary_key=True)
hash_code = Column(VARBINARY(64), unique=True)
file_pointer = Column(Text)
def __init__(self, hash_code, file_pointer):
self.hash_code = hash_code
self.file_pointer = file_pointer
def __repr__(self):
return "<HashPointer('%s', '%s')>" % (self.hash_code, self.file_pointer)
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
Engine = create_engine("mysql://user:[email protected]/db", echo=True)
Session = sessionmaker(bind=Engine)
session = Session()
fhash = HashPointer(0x661623708235, "c:\\test\\001.txt")
# PRINTS FINE
print(yaml.dump(fhash))
for instance in session.query(HashPointer).all():
# PRINTS FINE AS __repr__
print instance
# THROWS ERROR, 'CAN'T PICKLE INT OBJECTS'
print(yaml.dump(instance))
¿Cuál es el tipo de "instancia"? Un yaml.dump (10) funciona bien, entonces podría ser un tipo de SQLAlchemy que no tiene el método de decapado requerido (es decir,un método __reduce__ que devuelve tipos seleccionables). –