我正在使用sqlalchemy
ORM,该ORM包含用于指定磁盘上本地数据的文件路径的功能。以下是一个玩具示例:
from pathlib import Path
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.hybrid import hybrid_property
_base = declarative_base()
class MyTable(_base):
__tablename__ = 'mytable'
id = Column(types.String, primary_key=True)
some_text = Column(types.String, nullable=False)
def build_file_path(self):
base_dir = Path('some_directory/')
return (base_dir / some_text).with_suffix('.csv')
我希望能够根据build_file_path
返回的文件路径是否存在对表的查询进行过滤。我通过指定混合属性来做到这一点:
@hybrid_property
def file_exists(self):
# Return whether the image path relating to a submission exists
return self.build_image_path().exists()
不幸的是,如果不单独指定表达式逻辑,就无法过滤对file_exists
属性的查询。我以为我可以复制并粘贴以下相同的逻辑,但这没用:
@file_exists.expression
def radius(self):
# The following doesn't work:
return self.build_image_path().exists()
有人知道如何定义表达式逻辑来检查文件路径是否存在吗?我需要动态创建文件路径(base_dir
可能会更改),因此不能在db中包括文件路径。