SQLITE3 - 使用循环将数据放入列中
Posted
技术标签:
【中文标题】SQLITE3 - 使用循环将数据放入列中【英文标题】:SQLITE3 - Put Data in columns with a loop 【发布时间】:2017-12-23 21:46:13 【问题描述】:我正在使用 SQLITE3。
在我的 SQL 表中,我有一个 50 列的表,我想在每一列中放入 My_List 的每个值,它有 50 个元素。
有没有办法在 python 中编写一个循环来将我的数据放入我的表中?我试图找出它,但没有得到任何东西......
我当前的 3 个变量而不是 50 个变量的代码是:
import sqlite3
conn = sqlite3.connect("testdatabase.db")
c.execute('''CREATE TABLE mytable (Column1 text, Column2 text, Column3,
text) ''')
c.execute('''INSERT INTO mytable (Column1, Column2, Column3) VALUES (?,
?, ?)''', (myliste[0], myliste[1], myliste[2])
conn.commit()
非常感谢。
Lcs
【问题讨论】:
能否请您展示您的输入是什么样的(可能会缩小到 2-3 列)您希望输出是什么样的以及到目前为止您已经尝试过什么。如果您的问题很明确并且您为解决自己的问题付出了一些努力,那么 *** 的人将更有可能提供帮助。 【参考方案1】:我明白你在做什么。你几乎拥有它。你所拥有的是写一行数据。只需将其放入一个循环中,您就可以编写整个表格:
import sqlite3
conn = sqlite3.connect("testdatabase.db")
conn.execute("CREATE TABLE mytable (Column1 text, Column2 text, Column3 text)")
mytable = [
('a', 'b', 'c'),
('d', 'e', 'f'),
]
for myliste in mytable:
conn.execute("""INSERT INTO
mytable (Column1, Column2, Column3)
VALUES (?, ?, ?)""",
myliste)
conn.commit()
更新
要创建 50 列,如果您已有列列表,请将下面的变量 columns
替换为您自己的:
conn = sqlite3.connect("testdatabase.db")
conn.execute('DROP TABLE IF EXISTS mytable')
# Create ['Column1', 'Column2', ..., 'Column50']
columns = ['Column%d' % n for n in range(1, 51)]
# Create 'Column1 TEXT, ... Column50 TEXT'
columns_declaration = ', '.join('%s TEXT' % c for c in columns)
conn.execute("CREATE TABLE mytable (%s)" % columns_declaration)
conn.commit()
【讨论】:
非常感谢。但是,如果我有 50 列,我该怎么办?我必须写 ... mytable(Column1, Column2....) 等等直到 Column50? 你在某处有列名列表吗? 是的,我没有将整个代码放在我之前的评论中,因为它太长了,但是我之前确实输入了我的 50 列中的每一列。有没有办法引用我表中的列号?就像 python 中的列表一样:mytable[3] 获取第三列【参考方案2】:我在 post 中回答了类似的问题,我建议创建一个 csv 文件,然后使用 bulk insert
而不是使用 insert into
,因为逐行非常慢,使用这种方法你不需要担心列数或行数。我是为 sql server 做的,但我很确定它会在 sqlite 中工作。
【讨论】:
【参考方案3】:在 SQL 中,您可以省略 INSERT INTO
中的命名列,假设 每个 列都被附加并且值包括 all 列与相同表顺序对齐的数据。
然后考虑动态构建占位符进行参数化:
placeholders = ', '.join(['?'] * 50)
c.execute('''INSERT INTO mytable VALUES ()'''.format(placeholders), mylist)
【讨论】:
以上是关于SQLITE3 - 使用循环将数据放入列中的主要内容,如果未能解决你的问题,请参考以下文章
熊猫:循环列表并从列中的列表中查找单词...使用列表中的找到的单词创建新列
如何将复杂的 JSON 字符串放入 SQL Server 列中