Python SQL中绑定的数量不正确
我在0-100之间生成N个随机数。N取决于表1中的行数。有200排。我在返回的列表中得到200个随机数 我试图将列表中的这200个数字作为单独的行插入表2的“随机数”列中。随机数与表2中其他3列之间没有联系Python SQL中绑定的数量不正确,python,sql,Python,Sql,我在0-100之间生成N个随机数。N取决于表1中的行数。有200排。我在返回的列表中得到200个随机数 我试图将列表中的这200个数字作为单独的行插入表2的“随机数”列中。随机数与表2中其他3列之间没有联系 r = [random.randint(0,100) for rows in cursor.execute('SELECT * FROM table_1')] for r in rows: cursor.execute('UPDATE table_2 SET random_
r = [random.randint(0,100) for rows in cursor.execute('SELECT * FROM table_1')]
for r in rows:
cursor.execute('UPDATE table_2 SET random_number = (?)', r)
这就是我现在拥有的。我得到一份工作
编程错误:提供的绑定数量不正确。电流
语句使用1,提供了4个
错误。我见过其他的解决方案,但都不起作用。我也试过:
r = [random.randint(0,100) for rows in cursor.execute('SELECT * FROM table_1')]
r = str(r)
cursor.execute('INSERT INTO table_2 (random_number) VALUES (?)', [','.join(r)])
它正在运行,但没有任何内容插入到random_number列中。我认为问题在于,当您在for循环中访问它时,行不再在范围内,也不是您希望迭代的列表 如果我理解正确,那么您应该将脚本更改为以下内容:
# generate random list
r_list = [random.randint(0,100) for rows in cursor.execute('SELECT * FROM table_1')]
# iterate over that list and insert
for r in r_list:
cursor.execute('INSERT INTO table_2 (random_number) VALUES (?)', r)
我已经解决了我的问题。我注意到这是拆分整数并将其保存到新行中 我就是这样解决的:
rows = cursor.execute('SELECT * FROM table_1').fetchall()
r_list = [random.randint(0,100) for row in rows]
for i in xrange(0,len(rows)):
cursor.execute('UPDATE table_2 SET random_number=' + str(r_list[i]) + ' WHERE row_id = ' + str(rows[i][0]))
您不是在覆盖
r
变量吗?另外:UPDATE
是一个错误的操作,即使不是,每次迭代都会更新表2中的所有行。@EmilVikström是的,我忘了更改它,我用一个插入项编辑了我的答案谢谢您的回答。我现在得到一个错误:ValueError:参数的类型不受支持。这是因为当r_列表值为str时它需要int吗?我还没有为random_number列指定数据类型。如果我声明r_list是一个str,它将运行,但是,该列中没有插入任何内容。或者它不支持列表中的值?