我已经看到了一些可以解决这个问题的纯SQL查询,但我的SQL并不是真正的重点,所以我们会理解SQLAlchemy解决方案。我也使用sqlite。
我在SQLAlchemy中有一个类似于普通文件系统的层次结构类型结构 - 最后有叶子的嵌套节点。我有一个只使用Python查找文件的解决方案,但它很慢,所以我希望有更快的方法。
文件夹定义如下:
class folder(Base):
__tablename__ = 'folder'
id = Column(Integer, primary_key=True)
parentid = Column(Integer, ForeignKey('folder.id', ondelete='CASCADE'),index=True)
type = Column(Text(50))
children = relationship('folder',
cascade='all',
backref=backref('parent', remote_side='folder.id'),
)
__mapper_args__ = {
'polymorphic_identity': 'folder',
'polymorphic_on': type
}
def getFiles(self):
""" returns a list of the files in this folder
"""
flist = []
for child in self.children:
flist += child.getFiles()
return flist
文件:
class file(folder):
__tablename__ = 'file'
id = Column(Integer, ForeignKey('folder.id', ondelete='CASCADE'), primary_key=True)
name = Column(Text(50))
__mapper_args__ = {
'polymorphic_identity': 'file',
'inherit_condition': (id == folder.id),
}
def getFiles(self):
""" return self as the only file
"""
return [self]
目前我按文件名查找文件如下:
files = some_folder.getFiles()
return [f for f in files if file_name in f.name.lower()]
有没有更好的方法来查询文件夹中的文件?
答案 0 :(得分:0)
我无法按照我想要的方式构建查询,但是在我周围找到了一个更快的解决方案。我没有找到所有文件然后搜索,而是遍历每个文件夹并查询其中的文件。它带来了相当大的性能提升。
<div class="title"><h1>{{ article.title }}</h1></div>
<div class="meta" style="font-size:11px;"><strong>{{ article.meta }}</strong>, <strong>Comments :</strong> {{ article.comments }}</div>
<div class="content">
<p>{{ article.content }}</p>
</div>