Tôi đang sử dụng YAML và SQLAlchemy. Tôi đã định nghĩa đối tượng của mình, và tôi có thể sử dụng YAML để in mà thôi. Tuy nhiên, khi tôi cố gắng sử dụng YAML trên đối tượng được trả về từ truy vấn SQLAlchemy, nó không thành công với lỗi can't pickle int objects
. Tôi đã in ra thể hiện được trả về từ SQLAlchemy, và nó hiển thị đúng loại. Tôi sẽ cho các mã làm như nói chuyện:Không thể chọn lỗi đối tượng int khi đối tượng đến từ 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))
Loại "cá thể" là gì? Một yaml.dump (10) hoạt động tốt, vì vậy tôi có thể là một kiểu SQLAlchemy không có phương thức tẩy yêu cầu (tức làphương thức __reduce__ tự trả về các loại có thể chọn). –