Python Storm查询引用集(一对多)

2024-04-25 19:28:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个简单的类映射现有数据库:

class File(object):
  __storm_table__ = 'files'
  fid = Int(primary=True)
  filename = Unicode()

class FileDownload(object):
  __storm_table__ = 'filefield_track'
  did = Int(primary=True)
  fid = Int()
  email = Unicode()
  date = DateTime()

  trackedfile = Reference(fid, File.fid)

File.filedownloads = ReferenceSet(File.fid, FileDownload.fid)

我只想找到所有的File对象,这些对象有一个非空的File.filedownloads集。在python中,只需查询所有File对象并手动过滤File.filedownloads字段,就可以做到这一点,但我认为有一种更干净的方法可以做到这一点(这行不通:):

^{pr2}$

我知道第一个在SQLAlchemy中工作:

session.query(File).filter(File.filedownloads != None)

Tags: 对象数据库trueobjecttableunicodefilesclass
1条回答
网友
1楼 · 发布于 2024-04-25 19:28:23

我找到了一个处理内部ID(fid)的“肮脏”解决方案

# Find all files that have been downloaded
subselect = Select(FileDownload.fid, distinct=True)
for f in store.find(File, File.fid.is_in(subselect)):
    print(f.filename, f.filedownloads.count())

相关问题 更多 >