所以我能够在我的数据库中创建一个新表,并从文件中获取所有信息,以使用游标填充表中的最后一列,并按照通常的方式执行。
最后一列信息来自不同的来源,并在我的代码中作为整数列表。我将如何将这个整数列表添加到我的上一栏?
我尝试了各种循环和迭代,但我只是错过了一些(可能非常明显)如何正确地表达它。
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
答案 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