Nic*_*ner 3 python google-app-engine google-cloud-datastore
此查询有效:
item = db.GqlQuery("SELECT * FROM Item WHERE CSIN = 13")[0]
Run Code Online (Sandbox Code Playgroud)
虽然如果没有结果返回,它会在我的脸上爆炸.(我怎样才能解决这个问题?for当我想要最多一次迭代时,一个循环看起来很可疑.)
此查询不起作用:
item = db.GqlQuery("SELECT * FROM Item WHERE CSIN = :1", CSIN)[0]
Run Code Online (Sandbox Code Playgroud)
CSIN是一个表示数字的字符串.我收到此错误:
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 507, in __call__
handler.get(*groups)
File "path\to\src\Main.py", line 42, in get
item = db.GqlQuery("SELECT * FROM Item WHERE CSIN = :1", CSIN)[0]
File "C:\Program Files\Google\google_appengine\google\appengine\ext\db\__init__.py", line 1717, in __getitem__
raise IndexError('The query returned fewer than %d results' % (arg+1))
IndexError: The query returned fewer than 1 results
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
您正试图从列表(或类似列表的对象)中获取一个空的项目.你正在做的事情有点类似于以下内容:
>>> results = [] # an empty list
>>> item = results[0] # Raises an IndexError, because there is nothing in the list
Run Code Online (Sandbox Code Playgroud)
你需要做的是:
item = db.GqlQuery("SELECT * FROM Item WHERE CSIN = :1", CSIN).get()
Run Code Online (Sandbox Code Playgroud)
然后,item将是None查询的第一个结果或第一个结果.