谷歌应用引擎返回空查询

2024-09-30 10:28:06 发布

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

我试图在appengine上构建一个web应用程序,在某个时候,我需要一个函数来构造一个列表属性,其中一个成员来自不同的组。如果我使用Sqlite数据库和网页.py数据库模块,我可以实现我需要的如下:

db = web.database(dbn='sqlite',db=':memory:')
db.query("CREATE TABLE seq_list (seq TEXT, seq_pickle TEXT);")

# do some stuff to the database

def getUnique():
    uniq_entries = db.query("SELECT DISTINCT seq FROM seq_list;")
    if not uniq_sequences:
        for entry in uniq_entries:
            seq_query = db.query("SELECT * FROM seq_list WHERE seq='" + str(entry.seq) +"';")
            seq_obj = pickle.loads(seq_query[0].seq_pickle)
            self.uniq_sequences.append(seq_obj)

但我在应用程序引擎中遇到了麻烦。在

^{pr2}$

try/except用于显示print语句。此输出用于某些测试数据:

set([u'DXTMT', u'DIXTX', u'XSXDV', u'XI*MT'])
SELECT * FROM SeqObj WHERE seq='DXTMT'
SELECT * FROM SeqObj WHERE seq='DIXTX'
SELECT * FROM SeqObj WHERE seq='XSXDV'
SELECT * FROM SeqObj WHERE seq='XI*MT'

当我不把所有的东西都放在try-catch积木上时,我得到了

IndexError: The query returned fewer than 1 results

我不知道出了什么问题,因为我返回了唯一的序列,查询看起来也像我期望的那样,而且我可以验证条目是否在数据存储中。感谢任何帮助。在


Tags: textfromweb数据库应用程序dbwherequery
2条回答

这是在dev_appserver上失败还是在真正的appengine服务器上失败?在

如果它可以在dev_appserver上运行,但在实际服务器上不起作用,那么我猜您可能会缺少实际服务器上的一些索引。在

问题是无法对未编制索引的属性进行筛选(TextProperty未编制索引)。有关详细信息,请参见https://developers.google.com/appengine/docs/python/datastore/queries#Filtering_on_Unindexed_Properties_Returns_No_Results。在

如果已知seq字段少于500个字符,请尝试使用StringProperty。在

同样,在这些情况下,我总是建议首先在datastoreviewer中运行查询。它建议运行所需查询所需的索引。在

相关问题 更多 >

    热门问题