【发布时间】:2015-12-18 05:55:03
【问题描述】:
我用 PyQt 和 sqlite 开发了一个软件来管理科学文章。每篇文章都存储在 sqlite 数据库中,并且来自特定期刊。
有时,我需要对期刊的文章进行一些验证。所以我建立了两个列表,一个包含文章的 DOI(DOI 只是文章的唯一 ID),一个包含布尔值,如果文章正常,则为 True,如果文章不正常,则为 False:
def listDoi(self, journal_abb):
"""Function to get the doi from the database.
Also returns a list of booleans to check if the data are complete"""
list_doi = []
list_ok = []
query = QtSql.QSqlQuery(self.bdd)
query.prepare("SELECT * FROM papers WHERE journal=?")
query.addBindValue(journal_abb)
query.exec_()
while query.next():
record = query.record()
list_doi.append(record.value('doi'))
if record.value('graphical_abstract') != "Empty":
list_ok.append(True)
else:
list_ok.append(False)
return list_doi, list_ok
此函数返回两个列表。每个列表可以包含约 2000 个项目。之后,为了检查一篇文章是否正常,我只检查它是否在两个列表中。
编辑:我还需要检查一篇文章是否仅在 list_doi 中。
所以我想知道,因为性能在这里很重要:什么是更快/更好/更经济:
- 建立两个列表,并检查文章是否存在于两个列表中
- 用另一种方式编写函数:checkArticle(doi_article),该函数将对每篇文章执行 SQL 查询
RAM 中的速度和空间如何?如果项目很少或很多,结果会有所不同吗?
【问题讨论】:
标签: python sql performance sqlite pyqt