Sto usando YAML e SQLAlchemy. Ho definito il mio oggetto, e sono in grado di usare YAML per stampare ciò che va bene. Tuttavia, quando provo a utilizzare YAML sull'oggetto restituito da una query SQLAlchemy, non riesce con l'errore can't pickle int objects
. Ho stampato l'istanza restituita da SQLAlchemy e mostra il tipo corretto. Ti lascio il codice a parlare:Non è possibile mettere a picco l'errore dell'oggetto int quando l'oggetto proviene da 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))
Qual è il tipo di "istanza"? Un yaml.dump (10) funziona bene, quindi potrei essere un tipo SQLAlchemy che non ha il metodo di decapaggio richiesto (ad es.un metodo __reduce__ che restituisce di per sé i tipi selezionabili). –