我正在使用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
答案 0 :(得分:0)
我明白你要做什么。你几乎拥有它。你所拥有的是编写一行数据。只需将其放入循环中即可编写整个表格:
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()
答案 1 :(得分:0)
我在此post中回答了类似的问题我建议创建一个csv文件,然后使用bulk insert
而不是insert into
,因为逐行的速度非常慢,并且您不必担心列数或行数的方法。我是为sql server做的,但我很确定它可以在sqlite中使用。
答案 2 :(得分:0)
在SQL中,您可以省略INSERT INTO
中的命名列,假设附加了每个列,并且值包含与相同表顺序对齐的所有列的数据。
然后考虑动态构建占位符以进行参数化:
placeholders = ', '.join(['?'] * 50)
c.execute('''INSERT INTO mytable VALUES ({})'''.format(placeholders), mylist)