将值列表添加到sqlite表中的列

时间:2012-11-12 19:47:31

标签: python list sqlite

所以我能够在我的数据库中创建一个新表,并从文件中获取所有信息,以使用游标填充表中的最后一列,并按照通常的方式执行。

最后一列信息来自不同的来源,并在我的代码中作为整数列表。我将如何将这个整数列表添加到我的上一栏?

我尝试了各种循环和迭代,但我只是错过了一些(可能非常明显)如何正确地表达它。

connection = sqlite3.connect('database.db')
cursor = connection.cursor()
for j in list:
    cursor.execute('insert into Table (column) values (?)', j)
connection.commit()

我收到以下错误:

Traceback (most recent call last):
  File "Homework/Homework7/bam_counting.py", line 157, in <module>
    cursor.execute('insert into Genes (counts) values (?)', j)
ValueError: parameters are of unsupported type

2 个答案:

答案 0 :(得分:5)

如果您使用INSERT INTO...,那么sqlite将创建一个新行。 您必须使用UPDATE table ...来更新已存在的行。

您需要告诉sqlite要添加新列值的行。 通常,您可以使用类似

的SQL语句来执行此操作
UPDATE Table SET column = ? WHERE column2 = ?

其中column2是表格中的其他一些列。

所以这样的事情很慢但可能:

cursor.execute('SELECT column2 FROM Table ORDER BY column2')
column2 = [row[0] for row in cursor]
for j, c in zip(lst, column2):
    cursor.execute('UPDATE Table SET column = ? WHERE column2 = ?', [j, c])

更好的解决方案(如果可能的话)是暂停INSERT进入表格,直到您收集了所需的所有信息,然后单独执行INSERT


PS。如果您重新安排程序以收集要插入行列表args的所有数据,那么您可以调用

cursor.executemany('INSERT INTO ...', args)

比许多cursor.execute的调用快。

答案 1 :(得分:0)

<script> function handleFormSubmit(formObject) { google.script.run.processForm({ po: formObject.getElementById("po").value, invoice: formObject.getElementById("invoice").value }); } </script> <form id="myForm" onsubmit="handleFormSubmit(this)"> PO#: <input type="text" name="po" id="po" required><br/> Invoice#: <input type="text" name="invoice" id="invoice" required><br/> <input type="submit" value="Submit" /> </form> <div id="output"></div> 使用form.po 提供的完整示例:

form.invoice

另见Python Central