繁体   English   中英

SQLITE3-将数据放入带有循环的列中

[英]SQLITE3 - Put Data in columns with a loop

我正在使用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()

非常感谢你。

生命周期

我知道你在做什么。 您几乎拥有它。 您所拥有的只是写一行数据。 只需将其放入循环中即可编写整个表:

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替换下面的变量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()

我在这篇文章中回答了类似的问题,我建议创建一个csv文件,然后使用bulk insert而不是使用insert into因为逐行的速度确实很慢,并且使用这种方法,您不必担心列数或行。 我为sql server做过,但是我很确定它将在sqlite中工作。

在SQL中,您可以在INSERT INTO省略已命名的列,并假设每个列都将被追加,并且值包括对齐到同一表顺序的所有列的数据。

然后考虑动态构建用于参数化的占位符:

placeholders = ', '.join(['?'] * 50)

c.execute('''INSERT INTO mytable VALUES ({})'''.format(placeholders), mylist)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM