web*_*org 44 python sqlite list insert
我有一个列表,每行有3行代表一个表行:
>>> print list
[laks,444,M]
[kam,445,M]
[kam,445,M]
Run Code Online (Sandbox Code Playgroud)
如何将此列表插入表中?
我的表结构是:
tablename(name varchar[100], age int, sex 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],));
Run Code Online (Sandbox Code Playgroud)
分别插入三个字段可以正常工作,但是使用单行
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),)
才不是.
小智 77
有一个更好的方法
# 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()
Run Code Online (Sandbox Code Playgroud)
Dom*_*ger 34
conn = sqlite3.connect('/path/to/your/sqlite_file.db')
c = conn.cursor()
for item in my_list:
c.execute('insert into tablename values (?,?,?)', item)
Run Code Online (Sandbox Code Playgroud)
sti*_*til 13
不是直接的答案,但这里是一个函数,用于将具有列值对的行插入到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()
Run Code Online (Sandbox Code Playgroud)
使用示例:
sqlite_insert(conn, 'stocks', {
'created_at': '2016-04-17',
'type': 'BUY',
'amount': 500,
'price': 45.00})
Run Code Online (Sandbox Code Playgroud)
请注意,应事先验证表名和列名.
改编自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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147801 次 |
| 最近记录: |