[英]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.