在 python 中解压大列表
Unpacking big list in python
我必须解压缩这个大列表并将每个项目放入数据库。
除了这些数据,一切都很好。
我试过:
([styles], [seasons], [day], [id]) = search_
但是我得到这样的错误:
exception=ValueError('too many values to unpack (expected 4)')>
我使用这样的查询:
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
db.execute(insert,(styles,seasons,day,id))
我知道我犯了一个错误,但是这里每行有 4 个字段,看起来是对的
search_ = [[["Redwine"], ['04'], ['01'], ['81535']],
[["Redwine"], ['04'], ['02'], ['81536']],
[["Redwine"], ['04'], ['03'], ['81537']],
[["Redwine"], ['04'], ['04'], ['81538']],
[["Redwine"], ['04'], ['05'], ['81539']],
[["Redwine"], ['04'], ['06'], ['81540']],
[["Redwine"], ['04'], ['07'], ['81541']],
[["Redwine"], ['04'], ['08'], ['81542']],
[["Redwine"], ['04'], ['09'], ['81543']],
[["Redwine"], ['04'], ['10'], ['81544']],
[["Redwine"], ['04'], ['11'], ['81545']],
[["Redwine"], ['04'], ['12'], ['81546']],
[["Redwine"], ['02'], ['01'], ['97179']],
[["Redwine"], ['02'], ['02'], ['97180']],
[["Redwine"], ['02'], ['03'], ['97181']],
[["Redwine"], ['02'], ['04'], ['97182']],
[["Redwine"], ['02'], ['05'], ['97183']],
[["Redwine"], ['02'], ['06'], ['97184']],
[["Redwine"], ['02'], ['07'], ['97185']],
[["Redwine"], ['02'], ['08'], ['97186']],
[["Redwine"], ['02'], ['09'], ['97187']],
[["Redwine"], ['02'], ['10'], ['97188']],
[["Redwine"], ['02'], ['11'], ['97189']],
[["Redwine"], ['02'], ['12'], ['97190']]]
([styles], [seasons], [day], [id]) = search_
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
db.execute(insert,(styles,seasons,day,id))
编辑:
嗨,Barmar,因为该列表来自我加入的另一个函数
四个列表:
def cantina ( cantina_id)
for ... in ...:
styles =
season =
day =
id =
result.append([[styles], [season], [day], [id]]])
return result
和'append'只接受一个参数。
我要处理一些数据,基于'cantina_id';
将其添加到四个列表中并保存到 db
您需要遍历 search_
并分别处理每一行。
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
for row in search_:
([styles], [seasons], [day], [id]) = row
cur.execute(insert,(styles,seasons,day,id))
db.commit()
如果您更改 cantina
函数使其不创建所有这些单元素列表,您可以使用 executemany()
def cantina ( cantina_id)
result = []
for ... in ...:
styles =
season =
day =
id =
result.append([styles, season, day, id])
return result
search_ = cantina(some_id)
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
cur.executemany(insert, search_)
db.commit()
我必须解压缩这个大列表并将每个项目放入数据库。 除了这些数据,一切都很好。
我试过:
([styles], [seasons], [day], [id]) = search_
但是我得到这样的错误:
exception=ValueError('too many values to unpack (expected 4)')>
我使用这样的查询:
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
db.execute(insert,(styles,seasons,day,id))
我知道我犯了一个错误,但是这里每行有 4 个字段,看起来是对的
search_ = [[["Redwine"], ['04'], ['01'], ['81535']],
[["Redwine"], ['04'], ['02'], ['81536']],
[["Redwine"], ['04'], ['03'], ['81537']],
[["Redwine"], ['04'], ['04'], ['81538']],
[["Redwine"], ['04'], ['05'], ['81539']],
[["Redwine"], ['04'], ['06'], ['81540']],
[["Redwine"], ['04'], ['07'], ['81541']],
[["Redwine"], ['04'], ['08'], ['81542']],
[["Redwine"], ['04'], ['09'], ['81543']],
[["Redwine"], ['04'], ['10'], ['81544']],
[["Redwine"], ['04'], ['11'], ['81545']],
[["Redwine"], ['04'], ['12'], ['81546']],
[["Redwine"], ['02'], ['01'], ['97179']],
[["Redwine"], ['02'], ['02'], ['97180']],
[["Redwine"], ['02'], ['03'], ['97181']],
[["Redwine"], ['02'], ['04'], ['97182']],
[["Redwine"], ['02'], ['05'], ['97183']],
[["Redwine"], ['02'], ['06'], ['97184']],
[["Redwine"], ['02'], ['07'], ['97185']],
[["Redwine"], ['02'], ['08'], ['97186']],
[["Redwine"], ['02'], ['09'], ['97187']],
[["Redwine"], ['02'], ['10'], ['97188']],
[["Redwine"], ['02'], ['11'], ['97189']],
[["Redwine"], ['02'], ['12'], ['97190']]]
([styles], [seasons], [day], [id]) = search_
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
db.execute(insert,(styles,seasons,day,id))
编辑:
嗨,Barmar,因为该列表来自我加入的另一个函数 四个列表:
def cantina ( cantina_id)
for ... in ...:
styles =
season =
day =
id =
result.append([[styles], [season], [day], [id]]])
return result
和'append'只接受一个参数。
我要处理一些数据,基于'cantina_id'; 将其添加到四个列表中并保存到 db
您需要遍历 search_
并分别处理每一行。
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
for row in search_:
([styles], [seasons], [day], [id]) = row
cur.execute(insert,(styles,seasons,day,id))
db.commit()
如果您更改 cantina
函数使其不创建所有这些单元素列表,您可以使用 executemany()
def cantina ( cantina_id)
result = []
for ... in ...:
styles =
season =
day =
id =
result.append([styles, season, day, id])
return result
search_ = cantina(some_id)
insert= "INSERT INTO cantina (styles,seasons,day,id) VALUES (?,?,?,?)"
cur.executemany(insert, search_)
db.commit()