Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL中绑定的数量不正确_Python_Sql - Fatal编程技术网

Python SQL中绑定的数量不正确

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_

我在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_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,它将运行,但是,该列中没有插入任何内容。或者它不支持列表中的值?