无法将变量运行到for循环中的列表中以存储sql数据库



我无法循环通过"查询";变量,并将代码推送到数据库。但它正在经历一个错误"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)是不正确的

我不确定这些是否能解决你的问题;如果没有,请显示itemsoutput的输出。

最新更新