我有MS Access DB文件(.accdb),文件内存储了个人照片作为附件。在表构造函数中,我只看到一个字段“photos”,类型为“Attachment”。实际上,有三个隐藏字段的名称:photos.FileData、photos.FileName、photos.FileType。为了解析这些字段,我创建了以下类:
class Person:
__tablename__ = 'persons'
name = Column(String(255), name='name')
photos_data = Column(String, name='photos.FileData', quote=False)
....
如果我尝试同时获取Person的所有属性,如下所示:
persons = session.query(Person)
以下生成的SQL语句中出现错误:
SELECT ... [persons].photos.FileData AS persons_photos.FileData ...;
正如您所看到的,alias中存在点号,这会引发ODBC错误。我可以避免将FileData请求为单独值的行为:
persons = session.query(Person.photos_data.label('photos_data'))
或者我可以使用没有别名的原始SQL。但这不是我需要的正常ORM方式,因为每次请求DB后,我都必须手动构造Persons对象
是否可以在声明期间将自己的标签设置为列,或者甚至禁用所选列的标签
我看到了this great answer,但这似乎不适用于我。以下语句无法正常工作:
photos_data = Column(String, name='photos.FileData', quote=False).label('photos_data')
目前没有回答
相关问题 更多 >
编程相关推荐