python - 使用 python sqlite3 将行插入 sqlite 数据库的简要语法

标签 python sql csv sqlite

我有一个大小为 360x120 的 csv 文件,我想将其逐行导入到我的 sqlite 数据库中。对于一行,我知道如果 mytu​​ple 有 2 个元素,则以下语法有效:

import sqlite3
conn = sqlite3.connect(dbLoc)
cur = conn.cursor()
mytuple = (a, b, c, ...) #some long tuple of 120 elements
cur.execute('INSERT INTO tablename VALUES (?, ?)', mytuple)

问题是,我的行包含 120 列,而且我无法真正在 cur.execute() 行中输入 120 个问号。事实上我有,它有效,但是,这不是一个好的解决方案。我尝试过的一件事是:

cur.execute('INSERT INTO tablename VALUES ?', mytuple)

以为它只会执行 ?=mytuple 并将 ? 替换为 mytu​​ple 但它并没有这样做。用户对文章 sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html 的评论显示了这样的语法,这对我有用,但事实并非如此:

t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)

如此处所示,他能够使用单个 ? 将元组替换为执行字符串。如何使用 INSERT INTO tablename 实现相同的效果?

最佳答案

sqlite3 不支持更简洁的语法:

c.execute('INSERT INTO tablename VALUES ({}?)'.format('?,'*(len(t) - 1)), t)

注意:默认的 SQLITE_MAX_COLUMN2000。 SQLite 中的某些算法的列数是 O(n**2),也就是说,如果增加限制;它可能会减慢数据库操作。

关于python - 使用 python sqlite3 将行插入 sqlite 数据库的简要语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550049/

相关文章:

python - 如何通过API获取Telegram群组的消息?

python - 如何处理pythonsoap模块zeep中的complexType参数?

python - 从Python Numba CUDA内核调用加速的FFT

mysql - 如何在 MySQL 中使用命令行导入 SQL 文件?

python - 应用gensim LDA主题建模后,如何获取每个主题概率最高的文档并将其保存在csv文件中?

python - 从 python 中的行/Robust XML解析器中删除垃圾字符

sql - PIVOTing可变数量的行到列

sql - 匹配相似的邮政编码

python - 一种使用行和列标题读取 CSV 的 Pythonic 方法

Javascript:在插入 Google 表格之前按月而不是按天对 csv 数据进行分组