Python与SQLite:插入数据到表中

67 投票
8 回答
195387 浏览
提问于 2025-04-15 18:11

有一个这样的表结构:

tablename(
    name varchar[100], 
    age int, 
    sex char[1]
)

有一个 list,里面有3行,每一行代表表中的一条记录:

row1 = [laks,444,M]
row2 = [kam,445,M]
row3 = [kam,445,M]

我是不是应该用其他东西,而不是列表?

下面是实际的代码部分:

    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),)

8 个回答

15

这不是直接的答案,但这里有一个函数可以把一行数据和对应的列值插入到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})

请注意,表格名称和列名称应该提前验证一下。

97

有更好的方法

# 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()
49

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种特定的格式,这样程序就能更容易地使用它们。

比如说,如果我们从一个网站获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够处理这些文本,我们可能需要把它们转化为一种数据结构,比如列表或者字典。这样做的好处是,程序可以更方便地访问和操作这些数据。

在这个过程中,我们可能会用到一些工具和库,这些工具可以帮助我们更轻松地进行数据转换和处理。总之,理解数据的格式和如何转换它们,是编程中非常重要的一部分。

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

撰写回答