flask - 无法将 运行 变量添加到 for 循环中的列表以存储 sql 数据库
flask - unable to run a variable to a list in for loop to store the sql database
我无法使用项目列表遍历“查询”变量并将代码推送到数据库。但它正在经历一个错误““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 returns ['abc','bcd','cde','def'] 列表项
query2: example1.com returns ['xyz','yza','zab'] 列表项
我发现了一些问题:
- 您不需要
if request.method == 'POST'
语句,您已经在 route
装饰器中声明了方法。
for i in items
returns来自items
的每个元素,i
变量不是索引;所以,user = User(listOfItems=items[i], query=query)
是不正确的。
我不确定这些是否能解决您的问题;但如果没有,请显示 items
和 output
.
的输出
这部分代码有问题。 for i in items 表示该索引处的值,而不是索引本身。所以第一次迭代将 return '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)
我无法使用项目列表遍历“查询”变量并将代码推送到数据库。但它正在经历一个错误““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 returns ['abc','bcd','cde','def'] 列表项 query2: example1.com returns ['xyz','yza','zab'] 列表项
我发现了一些问题:
- 您不需要
if request.method == 'POST'
语句,您已经在route
装饰器中声明了方法。 for i in items
returns来自items
的每个元素,i
变量不是索引;所以,user = User(listOfItems=items[i], query=query)
是不正确的。
我不确定这些是否能解决您的问题;但如果没有,请显示 items
和 output
.
这部分代码有问题。 for i in items 表示该索引处的值,而不是索引本身。所以第一次迭代将 return '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)