我无法循环通过"查询";变量,并将代码推送到数据库。但它正在经历一个错误"ValueError:没有足够的值来解包(应为2,得到1("&";,有人能查一下代码吗?
@app.route('/', methods=['POST'])
def test():
if request.method == 'POST':
try:
query = request.form['url']
r = requests.get(query)
output = r.json()
items = output['result']
# # items = ['abc','bcd','cde','def'] # here items will be in list
for i in items:
user = User(listOfItems=items[i], query=query)
db.session.add(user)
db.session.commit()
responseBody = {'message': items}
return make_response(jsonify(responseBody))
except Exception, e:
return ('Oops!', e.__class__, 'occurred.')
else:
responseBody = {'message': 'failed'}
return make_response(jsonify(responseBody))
数据库中的期望输出:
listOfItems query time_stamp
abc example.com -date-
bcd example.com -date-
cde example.com -date-
def example.com -date-
xyz example1.com -datetime.now-
yza example1.com -datetime.now-
zab example1.com -datetime.now-
在这里,query1:example.com返回['abc','cd','code','def']列表项query2:example1.com返回['xyz','yza','zab']列表项
这部分代码有一个问题。因为items中的i表示该索引处的值,而不是索引本身。因此,第一次迭代将返回"abc",依此类推
for i in items:
user = User(listOfItems=items[i], query=query)
db.session.add(user)
db.session.commit()
假设您想要列表中的值并插入它们,则将行更改为
user = User(listOfItems=i, query=query)
我发现了一些问题:
- 您不需要
if request.method == 'POST'
语句,您已经在route
装饰器中声明了方法 for i in items
返回items
中的每个元素,i
变量不是索引;因此user = User(listOfItems=items[i], query=query)
是不正确的
我不确定这些是否能解决你的问题;如果没有,请显示items
和output
的输出。