Python和SQLite:插入到表中

我有一个列有3行,每个代表一个表行:

>>> print list [laks,444,M] [kam,445,M] [kam,445,M] 

如何将此列表插入表中?

我的表格结构是:

 tablename(name varchar [100],年龄int,性char [1])

还是应该使用列表以外的东西?

这里是实际的代码部分:

  for record in self.server: print "--->",record t=record self.cursor.execute("insert into server(server) values (?)",(t[0],)); self.cursor.execute("insert into server(id) values (?)",(t[1],)) self.cursor.execute("insert into server(status) values (?)",(t[2],)); 

插入三个字段分开工作,但使用一个单一的线

self.cursor.execute("insert into server(server,c_id,status) values (?,?,?)",(t[0],),(t[1],),(t[2],))

要么

self.cursor.execute("insert into server(server,c_id,status) values (?,?,?)",(t),)

才不是。

 conn = sqlite3.connect('/path/to/your/sqlite_file.db') c = conn.cursor() for item in my_list: c.execute('insert into tablename values (?,?,?)', item) 

有一个更好的方法

 # Larger example rows = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00), ('2006-04-06', 'SELL', 'IBM', 500, 53.00)] c.executemany('insert into stocks values (?,?,?,?,?)', rows) connection.commit() 

改编自http://docs.python.org/library/sqlite3.html

 # Larger example for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00), ('2006-04-06', 'SELL', 'IBM', 500, 53.00), ]: c.execute('insert into stocks values (?,?,?,?,?)', t) 

不是一个直接的答案,但这里是一个函数,插入一个行列值对sqlite表:

 def sqlite_insert(conn, table, row): cols = ', '.join('"{}"'.format(col) for col in row.keys()) vals = ', '.join(':{}'.format(col) for col in row.keys()) sql = 'INSERT INTO "{0}" ({1}) VALUES ({2})'.format(table, cols, vals) conn.cursor().execute(sql, row) conn.commit() 

使用示例:

 sqlite_insert(conn, 'stocks', { 'created_at': '2016-04-17', 'type': 'BUY', 'amount': 500, 'price': 45.00}) 

请注意,表名和列名应事先进行validation。