use*_*887 0 python sqlite list
所以我能够在我的数据库中创建一个新表并从文件中获取所有信息,以使用游标填充除表中最后一列之外的所有信息,并按照通常的方式执行.
最后一列信息来自不同的来源,并在我的代码中作为整数列表.我将如何将这个整数列表添加到我的上一栏?
我已经尝试了各种循环和迭代,但我只是错过了一些东西(可能很明显),如何正确地表达它.
connection = sqlite3.connect('database.db')
cursor = connection.cursor()
for j in list:
cursor.execute('insert into Table (column) values (?)', j)
connection.commit()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
如果你使用INSERT INTO...那么sqlite将创建一个新行.您必须使用UPDATE table ...更新已存在的行.
您需要告诉sqlite要添加新列值的行.通常,您可以使用类似的SQL语句来执行此操作
UPDATE Table SET column = ? WHERE column2 = ?
Run Code Online (Sandbox Code Playgroud)
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])
Run Code Online (Sandbox Code Playgroud)
一个更好的解决方案(如果可能的话)是在INSERT你收集所有需要的信息然后做一个单独的工作之前推迟到桌面INSERT.
PS.如果您重新安排程序以收集要插入行列表的所有数据args,那么您可以调用
cursor.executemany('INSERT INTO ...', args)
Run Code Online (Sandbox Code Playgroud)
这将比许多电话更快cursor.execute.
| 归档时间: |
|
| 查看次数: |
6349 次 |
| 最近记录: |